【发布时间】:2020-01-23 02:40:16
【问题描述】:
我遇到了Ansible group vars priority 中描述的问题(功能?),大概是因为我的库存结构不正确。
这个想法是有两个任务,适用于清单中定义的所有“路由器”或“防火墙”。这部分工作正常——Ansible 正确解析库存并区分两者。
问题是由于解析库存的方式,它为每个客户组使用相同的 ansible_user 和 ansible_password。根据文档,这显然是有道理的:
当相同父/子级别的组合并时,就完成了 按字母顺序,最后加载的组会覆盖前一个 团体。例如,a_group 将与 b_group 合并,并且 匹配的 b_group 变量将覆盖 a_group 中的变量。
谁能建议我应该如何纠正这个问题?如果我将“路由器”和“防火墙”子组更改为唯一的,例如 custA_routers、custB_routers,那么它的行为与预期一样。但是,我认为我必须编写针对每个子组的任务。请注意,所有主机都是唯一的 IP 地址。
剧本:
---
- name: Check routers
hosts: routers
tasks:
- name: Do stuff.
<commands>
- name: Check firewalls
hosts: firewalls
tasks:
- name: Do stuff.
<commands>
库存:
all:
vars:
ansible_connection: network_cli
ansible_network_os: ios
children:
customerOne:
vars:
ansible_user: userOne
ansible_password: <vaulted pass>
children:
routers:
hosts:
x.x.x.x
y.y.y.y
firewalls:
vars:
ansible_network_os: asa
hosts:
z.z.z.z
customerTwo:
vars:
ansible_user: userTwo
ansible_password: <vaulted pass>
children:
routers:
hosts:
x.x.x.x
y.y.y.y
firewalls:
vars:
ansible_network_os: asa
hosts:
z.z.z.z
【问题讨论】: