根据ansible-playbook的帮助,可以使用--user=REMOTE_USER来定义ssh用户,但是也可以在host-var或group_vars中定义ansible_ssh_user: REMOTE_USER

问题

什么变量需要在group-或host_vars目录中定义,以防止在运行--vault-password-file时必须定义ansible-playbook?尝试





何时ansible_vault_password_file: ~/.vault_pass.txt在配置中定义,解密失败:

ERROR! Decryption failed on /path/to/vault


在本文档中未找到关联的保管库变量


评论

顺便说一句,现在已在此处记录(从1.7版开始):docs.ansible.com/ansible / ...

#1 楼

这是定义:

DEFAULT_VAULT_PASSWORD_FILE = get_config(p, DEFAULTS, 'vault_password_file', \
'ANSIBLE_VAULT_PASSWORD_FILE', None, value_type='path')



这意味着您可以放入ansible.cfg或剧本:

vault_password_file: ~/.vault_pass.txt


或在您的外壳中定义以下变量:

export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt


评论


我将URL文本留在那里的目的是向人们展示如何查看代码可以在缺少文档和容易找到代码的地方提供帮助。但是我想超链接应该足够了。

–吉里·克劳达(Jiri Klouda)
17 Mar 29 '17在4:37

如果其他任何操作失败,请阅读文档...,如果没有文档,请阅读源文件...如果您可以访问它,...如果可以,请确保您使用的版本正确。剩下的唯一一件事就是能够理解这一切。 PS:链接可能有一天会停止工作...

– Pierre.Vriens♦
17 Mar 29 '17在7:14

@JiriKlouda尽管已在group_vars / all / vars中定义,但它似乎不起作用。导出ANSIBLE_VAULT_PASSWORD_FILE =〜/ .vault_pass.txt必须运行。

– 030
17年3月30日在7:30



这是一个配置变量。它必须在ansible.cfg或等效文件中或在剧本中。

–吉里·克劳达(Jiri Klouda)
17 Mar 30 '17 at 11:44

我也专门检查了您运行的2.2版本,它位于:github.com/ansible/ansible/blob/stable-2.2/lib/ansible/…

–吉里·克劳达(Jiri Klouda)
17年3月30日在16:18

#2 楼

您可以设置环境变量ANSIBLE_VAULT_PASSWORD_FILE,以存储Vault密码文件的路径。这样,您在运行剧本时就不会始终使用--vault-password-file开关。

Ansible的Vault文档中对此进行了描述,请点击此处。

因此,将export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt添加到~/.bash_profile中,从中获取源代码,您就可以开始使用。

如果对于不同的主机组需要不同的保管库密码,则应执行以下操作:


在此子目录中,
创建两个名为vars和的文件。跳马。在vars文件中,定义所有所需的变量,包括任何敏感变量。接下来,将所有
敏感变量复制到Vault文件中,并在这些
变量前添加Vault_。您应该调整vars
文件中的变量以指向匹配的vault_变量,并确保
Vault文件已被Vault加密。


最佳做法的方法是按组管理敏感信息。有关更多信息,请参阅此处的Ansible文档(上面的文本是从此处复制的)。

评论


这将不允许每个主机使用不同的密码

–滕西拜
17年3月29日在7:44

您是指连接密码吗?因为如果这样做,它与Ansible Vault有什么共同点?

– 13dimitar
17年3月29日在7:51

我指的是保管库密码,愿意为不同的组使用不同的保管库密码是有道理的(据我所知,这是问题的根源)。

–滕西拜
17 Mar 29 '17在7:54

我不这样理解。我已经编辑了答案以包括该场景。

– 13dimitar
17 Mar 29 '17 at 8:01

似乎更好。顺便说一句downvote不是我的

–滕西拜
17年3月29日在8:05