I have been waiting for ansible 2.3 as it was going to introduce encrypt_string feature.
Unfortuately I'm not sure how can I read the encrypted string.
I did try decrypt_string, decrypt (the file), view (the file) and nothing works.
cat test.yml
---
test: !vault |
$ANSIBLE_VAULT;1.1;AES256
37366638363362303836383335623066343562666662386233306537333232396637346463376430
3664323265333036663736383837326263376637616466610a383430623562633235616531303861
66313432303063343230613665323930386138613334303839626131373033656463303736366166
6635346135636437360a313031376566303238303835353364313434363163343066363932346165
6136
The error I'm geeting is ERROR! input is not vault encrypted data for test.yml
How can I decrypt the string so I know what it's value without the need to run the play?
Here's another way to decrypt strings
The trick here is we're passing a file with an Ansible vaulted secret,
mysecret
within it tooansible
and it's able to decrypt it.NOTE: If you do not have your password to decrypt the Ansible vaulted encrypted secret you can pass that in as well:
You can pipe the input then tell
ansible-vault
to output tostderr
and then redirect thestdout
to/dev/null
since the tool printsDecryption successful
.Something like:
Here is a example:
I hope they implement a simpler way of doing this.
Edit: Environment Variables as Input:
To have a similar behaviour with multi-line environment variables on
bash
useprintf
instead ofecho
Example (password: 123):
You can also do with plain
ansible
command for respective host/group/inventory combination, e.g.:yq extracts the encrypted var value, then will create a temporary file and use it with
ansible-vault
:This is how I am encrypting and decrypting strings inline, additionally for use as environment variables.
yq is especially useful here for interpreting yaml input.
In one line if I were to test encrypt and decypt a string I would do this-
I'm guessing that those usually interested in this are interested in decrypting environment variables. This is how I implement that use case, where testvar is the encrypted environment variable, and and $vault-id is the path to the key you are using to encrypt/decrypt.