根据此文档和本文档,应该可以通过在以下文件之一中指定
vault_password_file = ~/.vault_pass.txt
来定义默认的库密码文件:* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
尽管密码文件存在并且日志指示使用了包含该定义的ansible.cfg,但是解密失败:
user@host$
Using /etc/ansible/ansible.cfg as config file
ERROR! Decryption failed on /path/to/ansible/group_vars/production/vault
讨论
此保险库的通行证正确吗?
是。使用
--vault-password-file=~/.vault_pass.txt
运行ansible时,解密成功。以便我们弄清楚-环境变量的名称为
ANSIBLE_VAULT_PASSWORD_FILE
,对吗?不。使用此变量时,它可以工作,但目的是通过设置
/etc/ansible/ansible.cfg
将其设置在ansible.cfg中。使用什么版本的Ansible?
user@host:/dir$ ansible --version
ansible 2.2.2.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
在配置中使用完整路径是否有效?
解密失败同样,当指定了完整路径而不是
~
时,即/home/user/.vault_pass.txt
。#1 楼
目前尚不清楚为什么失败,但是在vault_password_file = ~/.vault_pass.txt
中设置/etc/ansible/ansible.cfg
就足够了。#2 楼
我发现Ansible / Python出现问题,导致解密失败。具体来说,Ubuntu 18.04上Python 3.6.8下的Ansible 2.7.10和2.7.13无法解密(使用
ansible-vault edit -vvvvv
)保管库文件与使用相同Ansible版本的Python 3.7.2在macOS 10.13上解密OK的文件相同。在Ubuntu上升级到Python 3.7.3(在18.04上使用
apt-get install python3.7
)修复了此问题。您的问题可能有所不同,但是如果在Python 3.6或更低版本上,我会尝试升级到3.7。
#3 楼
根据文档您还可以设置ANSIBLE_VAULT_PASSWORD_FILE环境变量,例如ANSIBLE_VAULT_PASSWORD_FILE =〜/ .vault_pass.txt,Ansible将自动在该文件中搜索密码。
确保使用的大小写完全相同。
评论
您缺少问题,特别是关于配置文件属性的,在问题中字面意思,请仔细阅读
–滕西拜
17年4月2日在20:58
评论
只是为了使我们很清楚-环境变量的名称是ANSIBLE_VAULT_PASSWORD_FILE,对吗?而echo $ ANSIBLE_VAULT_PASSWORD_FILE的输出是什么?
它为空,因为我尝试使用vault_password_file =〜/ .vault_pass.txt
变量名称区分大小写
这是在ansible.cfg中设置的。我没有使用环境变量