什么是Ansible的--vault-password-file配置?


12

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

题

需要在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/…– Tensibai
— 2017年

Answers:


13

这是定义:

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文本留在那里的目的是向人们展示如何看待代码如何在缺少文档和容易找到代码的地方提供帮助。但是我想超链接应该足够了。
— 吉里·克鲁达

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

@JiriKlouda虽然已在中定义,但似乎无法正常工作group_vars/all/vars。export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt必须运行。
— 030

这是一个配置变量。它必须在ansible.cfg或等效文件中或在剧本中。
— 吉里·克劳达

此外,我还特意查您运行2.2版本,它的存在:github.com/ansible/ansible/blob/stable-2.2/lib/ansible/...
— 吉日Klouda

2

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

Ansible的Vault文档中对此进行了描述,可在此处获得。

因此,将其添加export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt到您的~/.bash_profile,然后就可以开始使用了。

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

在此子目录中,创建两个名为vars和vault的文件。在vars文件中,定义所需的所有变量,包括任何敏感变量。接下来,将所有敏感变量复制到Vault文件中,并为这些变量加上Vault_前缀。您应该调整vars文件中的变量,使其指向匹配的vault_变量,并确保对库文件进行了库加密。

这是用于按组管理敏感信息的最佳实践方法的示例。有关更多信息,请参见Ansible的文档(此处复制了上面的文字)。


1
这将不允许每个主机使用不同的密码
— Tensibai'3

您是指连接密码吗?因为如果这样做,它与Ansible Vault有何共同点?
— dimitar,2017年

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

我不是那样理解的。我已经编辑了答案以包括该场景。
— dimitar'Mar

似乎更好。Btw downvote不是我的
— Tensibai'3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.