我不知道这一点。我有要传递给Ansible角色的host_vars。我可以遍历剧本中的项目,但是如果我将该项目分配给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'未定义”}
为什么不起作用?
答案 0 :(得分:2)
循环 with_items:“ {{connection}}” 创建循环变量 item 。包含的角色可以使用
item.connection_name
item.connection_ip
如果需要,可以重命名循环变量。参见Loop control