Я регистрируюсь с выходом Ansible из проверки сети таким образом:
- name: Test kube networking
shell: kubectl exec -n iperf -it {{ item }} /test.sh
loop: "{{ pods.stdout_lines }}"
register: echo
- debug: msg={{ item.stdout_lines }}
loop: "{{ echo.results }}"
а теперь как пройти через все записи? Я хочу иметь все "stdout_lines" из каждого результата как элемент. Возможно ли такое? Или, может быть, какой-то «вложенный» цикл: один по результатам, а второй по всем stdout_lines из каждого результата?
Всякий раз, когда я сталкиваюсь с подобными ситуациями ради анзибля, я останавливаюсь и ищу лучший подход.
Например, есть 'сценарий' модуль. Если вы напишете хороший скрипт, который выводит некоторый json, вы можете затем импортировать вывод этой команды как доступный факт с 'from_json' фильтр. Таким образом, вы будете усердно работать на своем любимом языке и систематизировать факты, чтобы их было легко просмотреть.
Но чтобы попытаться ответить на ваш вопрос ... Я предполагаю, что вы хотите, чтобы все stdout_lines из команды kubectl были объединены в один длинный список. Это должно сделать это:
- name: Test kube networking
shell: kubectl exec -n iperf -it {{ item }} /test.sh
loop: "{{ pods.stdout_lines }}"
register: echo
- set_fact:
stdout_lines: []
- set_fact:
stdout_lines: "{{ stdout_lines + item.stdout_lines }}"
with_items: "{{ echo.results }}"
- debug:
msg: "This is a stdout line: {{ item }}"
with_items: "{{ stdout_lines }}"