如何将ansible vault密码作为额外的var传递?
How to pass ansible vault password as an extra var?
我有能力使用另一种机制(Azure 管道秘密功能)加密变量,所以我想在那里(在 Azure 管道中)保存一个 ansible-vault 密码,并将其作为额外的 var 传递给 playbook 执行。
请问可以这样做吗?
我期待 what/how 的一个例子是
ansible-playbook --extra-vars "vault-password=${pipelinevariable}"
Vault 密码不能作为额外的变量传递。有几种方法可以提供它,这些都包含在文档中:
基本上你的选择是:
- 以交互方式提供
--ask-vault-pass
选项
- 通过以下任一方式从文件(静态或可执行文件)中读取它:
- 在命令行上提供
--vault-password-file /path/to/vault
选项
- 设置
ANSIBLE_VAULT_PASSWORD_FILE
环境变量(例如 export ANSIBLE_VAULT_PASSWORD_FILE=/path/to/vault
)。
在上述文档中还有很多东西需要学习,尤其是如何使用带有 id 的多个保管库密码,如何使用客户端脚本从密钥库中检索密码...
May I know if it can be done so?
不熟悉 Ansible Vault
,但根据 Zeitounator.
分享的文档,你至少有两个方向
1.Use a CMD task 首先创建一个包含纯文本内容的保险库密码文件。 (不确定是否可以通过这种方式创建 vault-password-file,可能行不通。)
(echo $(SecretVariableName)>xxx.txt
)
然后你可以使用新创建的xxx.txt文件作为ansible-playbook --vault-password-file /path/to/my/xxx.txt xxx.yml
的输入。
2.Create 在 运行 管道之前相应的 vault-password-file,将其添加到版本控制中。 (您当前管道的相同源回购)
然后您可以在 vault-password-file 可用时轻松使用 ansible-playbook --vault-password-file
。您还可以将密码文件存储在私有 github 存储库中,通过 git clone https://{userName}:{userPassword}@github.com/xxx/{RepoName}.git
获取存储库,将所需的密码文件复制到您通过 运行 ansible-playbook 命令通过 [=18] 的目录=].无论是否支持 direction 1
,此方向都应该有效。
虽然这没有使用额外的变量,但我相信它可以满足您的要求:
仅 Optional/one-time:询问密码并将其设置为环境变量:
read -s ansible_vault_pass && export ansible_vault_pass
现在在您的 ansible 命令中使用该变量:
ansible-playbook your-playbook.yml --vault-password-file <(cat <<<"$ansible_vault_pass")
<(cat <<<"")
技术的来源和解释在另一个 Whosebug 答案中:。
我有能力使用另一种机制(Azure 管道秘密功能)加密变量,所以我想在那里(在 Azure 管道中)保存一个 ansible-vault 密码,并将其作为额外的 var 传递给 playbook 执行。
请问可以这样做吗?
我期待 what/how 的一个例子是
ansible-playbook --extra-vars "vault-password=${pipelinevariable}"
Vault 密码不能作为额外的变量传递。有几种方法可以提供它,这些都包含在文档中:
基本上你的选择是:
- 以交互方式提供
--ask-vault-pass
选项 - 通过以下任一方式从文件(静态或可执行文件)中读取它:
- 在命令行上提供
--vault-password-file /path/to/vault
选项 - 设置
ANSIBLE_VAULT_PASSWORD_FILE
环境变量(例如export ANSIBLE_VAULT_PASSWORD_FILE=/path/to/vault
)。
- 在命令行上提供
在上述文档中还有很多东西需要学习,尤其是如何使用带有 id 的多个保管库密码,如何使用客户端脚本从密钥库中检索密码...
May I know if it can be done so?
不熟悉 Ansible Vault
,但根据 Zeitounator.
1.Use a CMD task 首先创建一个包含纯文本内容的保险库密码文件。 (不确定是否可以通过这种方式创建 vault-password-file,可能行不通。)
(echo $(SecretVariableName)>xxx.txt
)
然后你可以使用新创建的xxx.txt文件作为ansible-playbook --vault-password-file /path/to/my/xxx.txt xxx.yml
的输入。
2.Create 在 运行 管道之前相应的 vault-password-file,将其添加到版本控制中。 (您当前管道的相同源回购)
然后您可以在 vault-password-file 可用时轻松使用 ansible-playbook --vault-password-file
。您还可以将密码文件存储在私有 github 存储库中,通过 git clone https://{userName}:{userPassword}@github.com/xxx/{RepoName}.git
获取存储库,将所需的密码文件复制到您通过 运行 ansible-playbook 命令通过 [=18] 的目录=].无论是否支持 direction 1
,此方向都应该有效。
虽然这没有使用额外的变量,但我相信它可以满足您的要求:
仅Optional/one-time:询问密码并将其设置为环境变量:
read -s ansible_vault_pass && export ansible_vault_pass
现在在您的 ansible 命令中使用该变量:
ansible-playbook your-playbook.yml --vault-password-file <(cat <<<"$ansible_vault_pass")
<(cat <<<"")
技术的来源和解释在另一个 Whosebug 答案中: