我无法弄清楚这一点。我有host_vars,我想传递给我的Ansible角色。我可以遍历我的剧本中的项目,但如果我将该项目放入我的Ansible角色,它就不起作用。我的主机库存如下所示:
hosts:
host_one:
domain: one
ip: 172.18.1.1
connection:
- connection_name: two
connection_ip: 172.18.1.2
- connection_index: three
local_hub_ip: 172.18.1.3
host_two:
domain: two
ip: 172.18.1.2
例如,这可以正常工作:
tasks:
- debug:
msg: "{{item.connection_name}}"
with_items:
- "{{ connection }}"
将为我拥有的每个连接正确打印出connections.connection_name,“两个”和“三个”。但是,如果我尝试将其传递给角色:
tasks:
- name: Adding several connections
include_role:
name: connection-create
with_items:
- "{{ connection }}"
其中我的角色“connection-create”使用一个名为“connection_name”的变量,我得到一个:
失败! => {“msg”:“'connection_name'未定义”}
为什么这不起作用?
循环with_items:“{{connection}}”创建循环变量项。包含的角色可以使用
item.connection_name
item.connection_ip
如果需要,可以重命名循环变量。见Loop control