我需要从目标机器上的 S3 提取构建。因此我需要以某种方式将 S3 密钥和机密传递给 ansible playbook。
我知道我可以将它们定义为
- 库存
- 剧本本身
但我真的不想在那里存储凭证。
我可以在 ansible playbook 中使用本地机器(或类似机器)的环境变量吗?
答案1
$ENV(SOMEVAR)
或{{ lookup('env', 'SOMEVAR') }}
(1.1+) 应该可以工作。您也可以vars_prompt
在剧本运行时使用它来请求它。
答案2
查看ansible-vault 它允许您将变量加密到文件中,然后在运行时“解锁”该文件。
除此之外,您还可以在运行时使用 -e "" 标志指定额外的变量:
ansible-playbook -i inv/production myplaybook.yml -e "s3_key=<value here> s3_secret=<secret here>"