You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/vault
Adrian Likins 86dc3c09ac
Fix vault --ask-vault-pass with no tty (#31493)
* Fix vault --ask-vault-pass with no tty

2.4.0 added a check for isatty() that would skip setting up interactive
vault password prompts if not running on a tty.

But... getpass.getpass() will fallback to reading from stdin if
it gets that far without a tty. Since 2.4.0 skipped the interactive
prompts / getpass.getpass() in that case, it would never get a chance
to fall back to stdin.

So if 'echo $VAULT_PASSWORD| ansible-playbook --ask-vault-pass site.yml'
was ran without a tty (ie, from a jenkins job or via the vagrant
ansible provisioner) the 2.4 behavior was different than 2.3. 2.4
would never read the password from stdin, resulting in a vault password
error like:

        ERROR! Attempting to decrypt but no vault secrets found

Fix is just to always call the interactive password prompts based
on getpass.getpass() on --ask-vault-pass or --vault-id @prompt and
let getpass sort it out.

* up test_prompt_no_tty to expect prompt with no tty

We do call the PromptSecret class if there is no tty, but
we are back to expecting it to read from stdin in that case.

* Fix logic for when to auto-prompt vault pass

If --ask-vault-pass is used, then pretty much always
prompt.

If it is not used, then prompt if there are no other
vault ids provided and 'auto_prompt==True'.

Fixes vagrant bug https://github.com/hashicorp/vagrant/issues/9033

Fixes #30993
7 years ago
..
invalid_format Better handling of malformed vault data envelope (#32515) 7 years ago
roles Support multiple vault passwords (#22756) 7 years ago
aliases Initial ansible-test implementation. (#18556) 8 years ago
empty-password Vault secrets empty password (#28186) 7 years ago
encrypted_file_encrypted_var_password Support multiple vault passwords (#22756) 7 years ago
example1_password Support multiple vault passwords (#22756) 7 years ago
example2_password Support multiple vault passwords (#22756) 7 years ago
example3_password Support multiple vault passwords (#22756) 7 years ago
faux-editor.py Use vault_id when encrypted via vault-edit (#30772) 7 years ago
format_1_0_AES.yml Cyptography pr 20566 rebase (#25560) 7 years ago
format_1_1_AES.yml Cyptography pr 20566 rebase (#25560) 7 years ago
format_1_1_AES256.yml Cyptography pr 20566 rebase (#25560) 7 years ago
format_1_2_AES256.yml Support multiple vault passwords (#22756) 7 years ago
password-script.py Support multiple vault passwords (#22756) 7 years ago
runme.sh Fix vault --ask-vault-pass with no tty (#31493) 7 years ago
runme_change_pip_installed.sh Cyptography pr 20566 rebase (#25560) 7 years ago
test-vault-client.py Vault secrets script client inc new 'keyring' client (#27669) 7 years ago
test_vault.yml Split integration tests out from Makefile. (#17976) 8 years ago
test_vault_embedded.yml Split integration tests out from Makefile. (#17976) 8 years ago
test_vault_embedded_ids.yml Support multiple vault passwords (#22756) 7 years ago
test_vault_file_encrypted_embedded.yml Support multiple vault passwords (#22756) 7 years ago
test_vaulted_inventory.yml add a intg test for vault encrypted inventory (#18550) 8 years ago
test_vaulted_template.yml Allow template files to be vaulted (#22951) 7 years ago
vault-password Split integration tests out from Makefile. (#17976) 8 years ago
vault-password-ansible Cyptography pr 20566 rebase (#25560) 7 years ago
vault-password-wrong Cyptography pr 20566 rebase (#25560) 7 years ago
vault-secret.txt Split integration tests out from Makefile. (#17976) 8 years ago
vaulted.inventory add a intg test for vault encrypted inventory (#18550) 8 years ago