【发布时间】:2019-03-29 20:49:24
【问题描述】:
在尝试迭代字典列表时,使用 loop 与 with_items 时,我得到了不同的结果。
我尝试过使用 loop|dict2items(结构不是字典,它告诉我的也一样多。呵呵)并使用 flatten 过滤器循环。
这里是词典列表:
"msg": [
{
"id": "id1",
"ip": "ip1",
"name": "name1"
},
{
"id": "id2",
"ip": "ip2",
"name": "name2"
},
{
"id": "id3",
"ip": "ip3",
"name": "name3"
},
{
"id": "id4",
"ip": "ip4",
"name": "name4"
}
]
}
这是剧本中的任务:
- name: Add privateIp windows_instances to inventory
add_host:
name: "{{ item.ip }}"
aws_name: "{{ item.name }}"
groups: windows_instances
aws_instanceid: "{{ item.id }}"
ansible_user: "{{ windows_user }}"
ansible_password: "{{ windows_password }}"
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
loop:
- "{{ list1 | flatten(levels=1) }}"
尝试运行上述代码时,我收到“列表对象没有属性”错误。我尝试了不同的展平级别都无济于事。
但是...
如果我简单地将上面的循环替换为:
with_items:
- "{{ list1 }}"
一切都很完美。我在这里的 with_items > 循环翻译中遗漏了一些东西......
【问题讨论】: