Vault

The playbook allows the end-user to perform various Ansible Vault related tasks, like listing currently encrypted role variables, encryption of a specific role variable and update the Ansible Vault global password.

Important

Refer to the Ansible tutorial, for usage of encrypted variables and files.

Execution

Example of playbook execution, using the Ansible Vault global password:

ansible-playbook --ask-vault-pass vault.yaml

Ansible Vault global password prompt:

Vault password: my-Gl0bal-Passw0rd

Variables Decryption

The variables can be decrypted and visualized with the playbook:

Select an action to perform:
 1) List encrypted role variables
 2) Encrypt role variable
 3) Update global password
: 1

Ansible Vault decrypted variables output:

ok: [localhost] =>
  encrypted_variables:
    ansible_password: [redacted]
    global_map:
      credentials:
        argocd:
          server:
            admin:
              password: [redacted]
            user:
              password: [redacted]
        cluster:
          postfix:
            user:
              alias: [email protected]
              name: [email protected]
              password: [redacted]
        externaldns:
          cloudflare:
            api:
              token: [redacted]
        kured:
          slack:
            notify:
              url: slack://[redacted]/[redacted]/[redacted]
        longhorn:
          backup:
            user:
              password: [redacted]
        victoriametrics:
          grafana:
            user:
              password: [redacted]

Variables Encryption

New variable values can be encrypted with the playbook:

Select an action to perform:
 1) List encrypted role variables
 2) Encrypt role variable
 3) Update global password
: 2
Set variable with a 'key|value' format:
global_map.credentials.argocd.server.user.password|this-Is-An0th3r-paSsw0rd
New Vault password: my-Gl0bal-Passw0rd
Confirm New Vault password: my-Gl0bal-Passw0rd

Important

Use the existing global password, to avoid breaking the playbook Ansible Vault decryption process.

Ansible Vault encrypted variable output:

ok: [localhost] =>
  encrypted_variable.stdout: |-
    global_map.credentials.argocd.server.user.password: !vault |
              $ANSIBLE_VAULT;1.1;AES256
              66343733613831643830336363643830343062343534643730353134633131656632366238373465
              3865303630383736373731396330356663653263393161300a386534613937636165376331343833
              31636135656432656130383132613834653739373835316330383162386539396231316532346366
              3438383835366466310a656236363438626430316239363266653462316538633935313438633336
              32646363343764353339363138363436623233363063623064333866363062653061

Global Password Update

The global password can be updated with the playbook:

Select an action to perform:
 1) List encrypted role variables
 2) Encrypt role variable
 3) Update global password
: 3
New global password (output is hidden):
new-Gl0bal-Passw0rd
Confirm new global password (output is hidden):
new-Gl0bal-Passw0rd

The newly encrypted variables will be displayed, update the all.yaml group variables file with the new values.