如何在tower-cli中请求Ansible Vault密码以解决解密失败问题?
在tower-cli中提供Ansible Vault密码的解决方案
tower-cli本身不支持--ask-vault-pass参数(该参数仅适用于本地执行的ansible-playbook),要解决解密失败问题,可通过以下几种方式实现:
方式一:复用Tower中已创建的Vault凭证
- 确认你已经在Ansible Tower图形界面中创建了Vault类型的凭证(即之前启动任务时手动选择的凭证),记录下凭证的ID或名称
- 执行
tower-cli job launch命令时,通过--credential参数指定该Vault凭证:
示例:tower-cli job launch --job-template <你的任务模板ID或名称> --credential "Vault凭证名称"
这种方式会让Tower自动调用凭证中的Vault密码完成解密,无需手动输入。tower-cli job launch --job-template "Web服务部署" --credential "Production Vault密钥"
方式二:通过环境变量传递Vault密码
如果不想复用Tower中的凭证,可以通过环境变量临时传递密码:
- 直接传递密码(注意:此方式密码会暴露在系统进程列表中,仅适合测试环境):
ANSIBLE_VAULT_PASSWORD="你的Vault密码" tower-cli job launch --job-template <模板ID或名称> - 更安全的方式是使用密码文件:
- 创建临时密码文件(注意设置权限避免其他用户读取):
echo "你的Vault密码" > /tmp/vault-pass.tmp chmod 600 /tmp/vault-pass.tmp - 设置环境变量指向该文件后执行命令:
ANSIBLE_VAULT_PASSWORD_FILE=/tmp/vault-pass.tmp tower-cli job launch --job-template <模板ID或名称> - 执行完成后删除临时文件:
rm /tmp/vault-pass.tmp
- 创建临时密码文件(注意设置权限避免其他用户读取):
方式三:预先在Job Template中关联Vault凭证
- 登录Ansible Tower图形界面,找到对应的Job Template
- 在模板的Credentials配置项中,添加你已创建的Vault凭证并保存
- 之后使用tower-cli启动任务时,无需额外参数,模板会自动使用关联的Vault凭证完成解密:
tower-cli job launch --job-template <模板ID或名称>
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

