如何将ansible Vault密码作为额外的var传递?

时间:2020-07-02 06:15:35

标签: ansible azure-pipelines ansible-vault

我能够使用另一种机制(Azure管道机密功能)对变量进行加密,因此我想在那里(在Azure管道中)保存ansible-vault密码,并将其作为额外的变量传递给Playbook执行。

我可以知道是否可以这样做吗?

我期望什么/如何期望的一个例子

ansible-playbook --extra-vars "vault-password=${pipelinevariable}"

2 个答案:

答案 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选项以交互方式提供它
  • 通过以下任一方式从文件(静态或可执行文件)中读取它:
    1. 在命令行上提供--vault-password-file /path/to/vault选项
    2. 设置ANSIBLE_VAULT_PASSWORD_FILE环境变量(例如export ANSIBLE_VAULT_PASSWORD_FILE=/path/to/vault)。

上述文档中还有很多要学习的内容,尤其是如何使用带有ID的多个保管库密码,如何使用客户端脚本从密钥存储中检索密码...