Используйте выходные данные задачи Ansible в качестве списка хостов в другой задаче или воспроизведении

#ansible #ansible-2.x

#ansible #ansible-2.x

Вопрос:

Я пытаюсь запустить сборник пьес, который способен динамически захватывать хосты. В настоящее время у нас есть скрипт, который захватывает хосты на основе входных параметров и выводит в стандартный вывод, аналогичный:

 host1
host2
host3
host4
 

Есть ли способ использовать эту информацию в воспроизведении

 - name: Prep
  hosts: localhost
  gather_facts: False
  tasks:
    - name: Grab Host List
      shell: somecommand.py
      register: hostlist
      changed_when: False
      always_run: yes

- name: Do something on Hosts from the previous play
  hosts: (host list from previous play)
  gather_facts: False
  tasks:
    - name: Do something on Hosts from the previous task
      shell: BlahBlah.sh
 

Ответ №1:

Вопрос: «хосты: (список хостов из предыдущего воспроизведения)«

A: Используйте add_host и создайте новую группу хостов, например

 - name: Prep
  hosts: localhost
  gather_facts: False
  tasks:
    - name: Grab Host List
      shell: somecommand.py
      register: hostlist
      changed_when: False
      always_run: yes
    - add_host:
        hostname: "{{ item }}"
        groups: new_group
      loop: "{{ hostlist.stdout_lines }}"

- name: Do something on Hosts from the previous play
  hosts: new_group
  gather_facts: False
  tasks:
    - name: Do something on Hosts from the previous task
      shell: BlahBlah.sh