Я получаю разные результаты при использовании цикла vs with_items при попытке перебрать список словарей.
Я пытался использовать loop | dict2items (структура не словарь, и это говорит мне столько же. Хех) и цикл с фильтром сглаживания.
Вот список словарей:
"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> здесь ...