Mikhail Salosin
Posted on June 14, 2022
To keep all our tokens secure we use the Ansible vault to encrypt them. Historically all files with secrets were encrypted with a single password instead of using a vault id and password file. This week we decided to migrate to vault id.
All files encrypted with a password and without vault id specified will have the header $ANSIBLE_VAULT;1.1;AES256
. We can use grep to find all files with this header. To do that run
grep "\$ANSIBLE_VAULT;1.1;AES256" group_vars/**/*.yml
Now we have a list of files that looks like that:
group_vars/staging/amazon.yml:$ANSIBLE_VAULT;1.1;AES256
group_vars/staging/db.yml:$ANSIBLE_VAULT;1.1;AES256
group_vars/staging/docker_registry.yml:$ANSIBLE_VAULT;1.1;AES256
....
Grep adds matched string at the end of every file. We can use the cut
command to remove this part since we only need file names. cut -d: -f1
will leave only the file name.
And finally, we can use xargs
to pass the file list to the ansible-vault rekey
command to convert all encrypted files to encrypted files with vault id.
The full command will look like this:
grep "\$ANSIBLE_VAULT;1.1;AES256" group_vars/**/*.yml | cut -d: -f1 | xargs ansible-vault rekey --new-vault-id vaultID@vaultfile
Posted on June 14, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
October 17, 2024
November 10, 2024