如何将Vault的yml文件作为额外的var传递?

时间:2020-09-22 04:53:05

标签: ansible ansible-vault ansible-pull

找不到有关此的任何内容。我需要将拱形变量文件作为额外的变量传递,即:

ansible-pull -U <URL> -f -C master -d <ROLE_PATH> -i hosts --clean --vault-id <VAULT-ID/PW-FILE> -e @<VAULTED-VAR-FILE>

似乎无法找到已存储文件。

ansible 2.9.10



config file = /etc/ansible/ansible.cfg

  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']

  ansible python module location = /usr/lib/python2.7/site-packages/ansible

  executable location = /bin/ansible

  python version = 2.7.5 (default, Apr  2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

Using /etc/ansible/ansible.cfg as config file

Parsed localhost, inventory source with host_list plugin

ERROR! Attempting to decrypt but no vault secrets found

注意:如果我解密文件,它将运行。

有人遇到相同的问题或知道解决方案吗?

感谢和问候

2 个答案:

答案 0 :(得分:0)

Q:“错误!尝试解密,但未找到文件库机密”

A:错误很明显。为vault secret提供ansible-pull。

但是,这将需要在纯文本中运行ansible-pull的远程主机上使保管库秘密可用。从安全的角度来看,这是一个很弱的解决方案。仅在安全的环境中使用它。否则,建议您使用推送模型来管理机密。


替代解决方案

如果您确实需要通过ansible-pull管理远程主机上的机密,则可能需要将机密存储在passwordstore中,并使用Ansible查找插件passwordstore来检索机密。

  • 密码存储区使用gpg
  • gpg是最好的开源加密软件套件
  • 而不是Vault机密会在远程主机上维护gpg密钥
  • run gpg-agent
  • 密码存储区将加密文件存储在git中
  • 在运行ansible-pull之前,将密码存储区git repo克隆/拉至远程主机

答案 1 :(得分:0)

感谢您的回复。

当然,秘密文件和存储的var文件在远程主机上。我使用--vault-id还是--vault-password-file都没关系。

当我解密文件或从cli调用中删除文件时,它正在运行。 看起来,就像只是不想使用给定的vault-pw-file / vault-id解密已存储的文件一样。

还没有对passwordstore做任何事情,但是远程主机应该尽可能简单。当然,我必须安装ansible和git才能使用ansible-pull,但是使用passwordstore时,我还必须安装pass或解决另一个问题需要另一个RPM。这样就积累了。