Ищет помощь с проблемой, с которой я боролся в течение нескольких часов. Я хочу перебирать список, запускать команду, регистрировать вывод для каждой команды, а затем повторять отладку по каждому уникальному регистру {{someregister}}. StdoutИтерация с использованием with_items и регистрация
Например, следующий код будет выплеснуть msg «:„1“ и „сообщение“:„2“
---
- hosts: localhost
gather_facts: false
vars:
numbers:
- name: "first"
int: "1"
- name: "second"
int: "2"
tasks:
- name: Register output
command: "/bin/echo {{ item.int }}"
register: result
with_items: "{{ numbers }}"
- debug: msg={{ item.stdout }}
with_items: "{{ result.results }}"
однако, если я пытаюсь захватить вывод команды в переменном регистре, который называется использованием with_list, у меня возникли проблемы с доступом к список или элементы внутри него. Например, слегка изменяя код:
---
- hosts: localhost
gather_facts: false
vars:
numbers:
- name: "first"
int: "1"
- name: "second"
int: "2"
tasks:
- name: Register output
command: "/bin/echo {{ item.int }}"
register: "{{ item.name }}"
with_items: "{{ numbers }}"
- debug: var={{ item.name.stdout }}
with_items: "{{ numbers }}"
дает мне:
TASK [debug]
> ******************************************************************* fatal: [localhost]: FAILED! => {"failed": true, "msg": "'unicode
> object' has no attribute 'stdout'"}
Разве нельзя динамически назвать зарегистрировать вывод команды, который затем может быть назван позже в игре ? Я бы хотел, чтобы каждая итерация команды и ее последующее имя было получено уникальным образом, например, учитывая последний пример, я ожидал бы, что там будут зарегистрированные переменные «первый» и «второй», но их нет.
Отбирать с_имя из отладочной строфы и просто явно указывать var или message, используя first.stdout возвращает «undefined».
Несущая версия 2.0.2.0 на Centos 7_2.
Заранее спасибо.
Спасибо Amit, который помог и я переписал вопрос в надежде, что это понятно. – Rowley