我想导入现有的库存,我以前使用过的Ansible (独立的),包括group_vars和金库文件到Ansible (3.2.0)。
但是,一旦Vault文件发挥作用,它似乎就不起作用了。一旦我设置了Vault密码文件凭证并使用源类型“来源于一个项目”创建库存--我无法在“源详细信息”下选择Vault凭据。
当我手动将其放入并保存源时,同步会因以下错误而失败:
1.735 INFO Updating inventory 10: TEST
1.753 DEBUG Using system install of ansible-inventory CLI: /usr/bin/ansible-inventory
1.753 INFO Reading Ansible inventory source: /var/lib/awx/projects/_6__ansible_master/inventories/test/hosts
1.754 DEBUG Using private credential data in '/tmp/awx_123_LXUj9p'.
1.755 DEBUG Using fresh temporary directory '/tmp/awx_proot_ZURWmR' for isolation.
1.755 DEBUG Running from `/var/lib/awx/projects/_6__ansible_master/inventories/test` working directory.
Traceback (most recent call last):
File "/usr/bin/awx-manage", line 9, in <module>
load_entry_point('awx==3.2.0', 'console_scripts', 'awx-manage')()
File "/lib/python2.7/site-packages/awx/__init__.py", line 107, in manage
File "/var/lib/awx/venv/awx/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
utility.execute()
File "/var/lib/awx/venv/awx/lib/python2.7/site-packages/django/core/management/__init__.py", line 346, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/var/lib/awx/venv/awx/lib/python2.7/site-packages/django/core/management/base.py", line 394, in run_from_argv
self.execute(*args, **cmd_options)
File "/var/lib/awx/venv/awx/lib/python2.7/site-packages/django/core/management/base.py", line 445, in execute
output = self.handle(*args, **options)
File "/var/lib/awx/venv/awx/lib/python2.7/site-packages/django/core/management/base.py", line 661, in handle
return self.handle_noargs(**options)
File "/lib/python2.7/site-packages/awx/main/management/commands/inventory_import.py", line 1000, in handle_noargs
File "/lib/python2.7/site-packages/awx/main/management/commands/inventory_import.py", line 243, in load_inventory_source
File "/lib/python2.7/site-packages/awx/main/management/commands/inventory_import.py", line 179, in load
File "/lib/python2.7/site-packages/awx/main/management/commands/inventory_import.py", line 163, in command_to_json
RuntimeError: ansible-inventory failed (rc=4) with stdout:
stderr:
ERROR! Attempting to decrypt but no vault secrets found
我还尝试创建一个ansible_vault文件,并将变量"vault_password_file“指向它--但是这也不起作用(抱怨它找不到保险库密码文件)。
以前有人遇到过这种情况吗?
发布于 2017-10-27 08:38:23
所以看起来这更像是一个实现问题。根据RedHat,不建议将库文件与库存保持在一起,因为这意味着每次库存同步运行时它都会解密该文件。
我现在解决这个问题的方法是在剧本中使用"vars_files“。看起来是这样的:
# Secrets
vars_files:
- '../../secrets/{{ tower_env }}/vault.yml'
在the中,我传入tower_env变量,例如"dev“或"qa",然后当剧本运行时解密相应的金库文件,而不是同步库存。
发布于 2018-10-16 15:43:11
有两件事情你正在尝试去做,它们没有得到支持(至少现在是这样):
ansible-vault
加密整个文件,而不是变量这里的术语有点差,但是在这些文档中的“单加密变量”一节中,我有时会将这些内联变量称为内联变量。
https://docs.ansible.com/ansible/latest/user_指南/剧本_vault.html
Ansible现在支持在库存解析过程中移动这些内联变量。这种格式也同样安全,在引擎盖下也是相同的算法。加密变量的名称将公开给访问您的源代码管理的人员(这可能是合理的),但是您的值将被加密。
现在,使用该语法将值存储在.yml
变量文件中的group_vars/
或host_vars/
文件夹下。您应该发现Tower内部的库存同步是成功的(不使用任何保险库凭据),当您导航到组或主机时,您会看到变量的加密形式。
当您运行一个剧本(塔中的工作模板),然后附加一个保险库凭证在那个时候。这会将加密延迟到实际需要时的运行时上下文。
示例库存文件结构:
https://github.com/AlanCoding/Ansible-inventory-file-examples/tree/master/vault/single_变量_文件
另外,正如另一条注释所指出的,您可以将完整文件加密或内联加密变量放在文件夹结构中的源代码控制中,这将由Ansible获取,并通过附加到工作模板的保险库凭据进行解密。
发布于 2018-10-16 22:27:07
https://serverfault.com/questions/878320
复制相似问题