Я хотел бы получить список мостовых интерфейсов, сгруппированных по мастеру, как это:
brv100:
- vnet0
- eth0
brv101:
- vnet1
- eth1
Я хочу использовать собственный json вывод из команд оболочки. Единственное, что мне удалось сделать, - это получить заранее определенное количество интерфейсов, подобных этому:
- hosts: localhost
gather_facts: no
tasks:
- shell:
cmd: ip -details -pretty -json link show type bridge
register: list_bridges
- set_fact:
bridges: "{{ list_bridges.stdout }}"
- debug:
msg: "{{ bridges | map(attribute='ifname') | list}}"
- name: get json
shell:
cmd: ip -details -pretty -json link show master "{{ifname}}"
with_items: "{{bridges | map(attribute='ifname') | list}}"
loop_control:
loop_var: ifname
register: list_interfaces
- set_fact:
interfaces: "{{ list_interfaces.results | map(attribute='stdout') | list }}"
- set_fact:
toto: "{{interfaces.1}} + {{interfaces.2}}"
- debug:
msg: "{{toto | map(attribute='ifname')|list}}"
Теперь, если я хочу сделать то же самое с al oop:
- set_fact:
toto: " {{item|default([])}}+ {{ item |default([])}}.{{idx}} "
loop: "{{interfaces}}"
loop_control:
label: "{{item}}"
index_var: idx
- debug: var=toto
В результате получается не список списка, а список строк, и я не могу извлечь значения 'ifname' с помощью простой отладки
- debug:
msg: "{{toto | map(attribute='ifname')|list}}"
Что я должен сделать, так как чтобы получить выгоду от собственного вывода json и получить простой список мостовых интерфейсов (как это делал brctl show)?