我能够使用另一种机制(Azure管道机密功能)对变量进行加密,因此我想在那里(在Azure管道中)保存ansible-vault密码,并将其作为额外的变量传递给Playbook执行。
我可以知道是否可以这样做吗?
我期望什么/如何期望的一个例子
ansible-playbook --extra-vars "vault-password=${pipelinevariable}"
答案 0 :(得分:2)
我可以知道是否可以这样做吗?
不熟悉Ansible Vault
,但是根据 Zeitounator 共享的文档,您至少有两个指导。
1。首先使用CMD task创建具有纯文本内容的Vault密码文件。 (不确定是否可以通过这种方式创建Vault密码文件,但它可能无法正常工作。)
(echo $(SecretVariableName)>xxx.txt
)
然后,您可以使用新创建的xxx.txt文件作为ansible-playbook --vault-password-file /path/to/my/xxx.txt xxx.yml
的输入。
2。在运行管道之前,创建一个相应的Vault密码文件,并将其添加到版本控制中。 (您当前管道的相同源回购)
然后,当Vault密码文件可用时,您可以轻松使用ansible-playbook --vault-password-file
。您也可以将密码文件存储在私有github仓库中,通过git clone https://{userName}:{userPassword}@github.com/xxx/{RepoName}.git
获取仓库,通过Copy Files task将所需的密码文件复制到运行ansible-playbook命令的目录中。无论是否支持direction 1
,此方向都应起作用。
答案 1 :(得分:1)
保险柜密码不能作为额外的var传递。提供此文件的方法有几种:
基本上,您的选择是:
--ask-vault-pass
选项以交互方式提供它--vault-password-file /path/to/vault
选项ANSIBLE_VAULT_PASSWORD_FILE
环境变量(例如export ANSIBLE_VAULT_PASSWORD_FILE=/path/to/vault
)。上述文档中还有很多要学习的内容,尤其是如何使用带有ID的多个保管库密码,如何使用客户端脚本从密钥存储中检索密码...