此问答的后续操作。

根据此文档和本文档,应该可以通过在以下文件之一中指定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

评论

只是为了使我们很清楚-环境变量的名称是ANSIBLE_VAULT_PASSWORD_FILE,对吗?

而echo $ ANSIBLE_VAULT_PASSWORD_FILE的输出是什么?

它为空,因为我尝试使用vault_password_file =〜/ .vault_pass.txt

变量名称区分大小写

这是在ansible.cfg中设置的。我没有使用环境变量

#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