在group_vars文件中回答多个密码保险库

时间:2017-05-11 15:51:50

标签: ansible

我遇到问题,Ansible在传递命令时尝试解码错误的保险库。

设置如下:

我的ansible.cfg

[defaults]
transport=smart
hostfile=./hosts
host_key_checking=False
timeout=5

[ssh_connection]
ssh_args = ""

我的主机文件:

[BigIP-Devices]
BigIP-1
BigIP-2

[Cisco-Devices]
Cisco-1
Cisco-2
TEST1

我的group_vars:

BigIP-Devices   <  This is a vault encrypted with bigip-vaultkey
Cisco-Devices   <  This is a vault encrypted with cisco-vaultkey
bigip-vaultkey
cisco-vaultkey

两个保险库都如下所示,每个保险库都有不同的细节:

---
 ansible_ssh_user: user
 ansible_ssh_pass: password

我正在尝试使用以下命令:

ansible -c ssh Cisco-Devices  --vault-password-file ./group_vars/cisco-vaultkey --limit TEST1  -m raw -a "show version"

即使它在命令中调用Cisco-Devices,我也会收到以下错误:

ERROR! Decryption failed on /home/users/ansible/device-access/group_vars/BigIP-Devices

但是,如果我将BigIP文件移出group_vars,它可以正常工作。

任何人都有任何想法?

非常感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

这似乎是预期的行为 解析完整清单后,将应用所有主机模式和限制。

在您的情况下,Ansible发现BigIP-DevicesCisco-Devices组并尝试加载相应的组变量。

如果您从未同时在BigIP-DevicesCisco-Devices上执行您的剧本,您可能希望将它们分成不同的库存,例如:

./inventories/
./inventories/bigip/hosts
./inventories/bigip/group_vars/all/BigIP-Devices
./inventories/
./inventories/cisco/hosts
./inventories/cisco/group_vars/all/Cisco-Devices

并使用-i inventories/bigip添加所需的广告资源。

P.S。或者对所有文件使用相同的保管库密码。