2

I need to pull a build from S3 on my target machine. Therefore I need to pass the S3 key and secret to the ansible playbook somehow.

I know that I could define them in

  • the inventory
  • the playbook itself

but I really don't want to store credentials there.

Can I use environment variables from the local machine (or something similar) in an ansible playbook?

2 Answers 2

5

$ENV(SOMEVAR) or {{ lookup('env', 'SOMEVAR') }} (1.1+) should work. You could also use vars_prompt to request it at playbook runtime.

2

Check out ansible-vault it allows you to encrypt variables into a file and then "unlock" that file at run-time.

Failing that, you can also specify extra variables at runtime with the -e "" flag:

ansible-playbook -i inv/production myplaybook.yml -e "s3_key=<value here> s3_secret=<secret here>"

You must log in to answer this question.