r0r*_*n0a 6 ansible ansible-vault azure-pipelines
我能够使用另一种机制(Azure管道秘密功能)来加密变量,所以我想在那里保存一个ansible-vault密码(在Azure管道中)并将其作为额外的var传递给playbook执行。
请问可以吗?
我期待什么/如何期待的一个例子是
ansible-playbook --extra-vars "vault-password=${pipelinevariable}"
Run Code Online (Sandbox Code Playgroud)
保管库密码不能作为额外变量传递。有多种方法可以提供它,文档中均介绍了这些方法:
基本上你的选择是:
--ask-vault-pass选项--vault-password-file /path/to/vault在命令行上提供选项ANSIBLE_VAULT_PASSWORD_FILE环境变量(例如export ANSIBLE_VAULT_PASSWORD_FILE=/path/to/vault)。在上面的文档中还有很多东西需要学习,特别是如何使用带有 ID 的多个保管库密码,如何使用客户端脚本从密钥存储中检索密码......
这些答案都不适合我。我确实从这里的帖子中找到了有效的答案。根据我所做的所有研究,您实际上无法将密码作为额外的变量传递并将其用作保管库密码。您必须将密码作为标准输入发送。诀窍是使用--vault-password-file=/bin/cat. 现在,当您通过 stdin 传递时,--vault-password-file将查找一个文件,但您正在传递一个程序,cat该程序将读取 stdin 的输入并使用它,而不是使用静态密码文件。下面是一个例子:
echo 'mYP4s5w0rd' | ansible-playbook -i ./inventory.ini ./settings.yaml --vault-password-file=/bin/cat
Run Code Online (Sandbox Code Playgroud)
这实际上是有效的,并且不会创建可以被某人捕获的静态文件。
| 归档时间: |
|
| 查看次数: |
22553 次 |
| 最近记录: |