Ansible: группа Delegate_to не работает правильно - PullRequest
0 голосов
/ 17 октября 2019

В моем Dockerized Ansible 2.8 я пытаюсь изменить настройки ssh на удаленных хостах, которые были добавлены в инвентарь динамически, используя add_host

playbook.yml

# configure new VMs
- name: Configure new Azure VM
  hosts: localhost
  connection: local
  gather_facts: no
  roles:
    - az-vm-configure
  tags:
    - az-vm-configure

main.yml

- name: Configure inventory
  include: inventory.yml

- name: Configure sshd
  include: sshd.yml
  delegate_to: '{{ groups.new[0] }}'

Работает нормально, когда я использую следующую конструкцию: delegate_to: '{{ groups.new[0] }}' Но когда я 'я пытаюсь реализовать это для всех хостов в группе следующим образом:

delegate_to: '{{ item }}'
with_items: "{{ groups['new'] }}"

моя задача игнорирует приведенную выше конструкцию и пытается выполнить задачу на локальном хосте: результат выполнения задачи

Похоже, delegate_to: '{{ item }}' не работает в этом случае. Может ли кто-нибудь предложить какой-нибудь обходной путь?

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Когда я пытался поместить hosts в main.yml , как упоминалось выше, я выдал ошибку ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path. В любом случае вот мое решение:

playbook.yml

# configure VM
- name: Add new VM to inventory
  hosts: localhost
  connection: local
  gather_facts: no
  tasks:
    - include_role:
        name: az-vm-configure
        tasks_from: inventory.yml
  tags:
    - az-vm-configure

- name: Configure new Azure VM
  hosts: new
  gather_facts: no
  tasks:
    - include_role:
        name: az-vm-configure
        tasks_from: sshd.yml
  tags:
    - az-vm-configure

ролей / az-vm-configure / tasks / main.yml

- include_tasks: '{{ tasks }}'
  with_items:
    - inventory.yml
    - sshd.yml
  loop_control:
    loop_var: tasks
0 голосов
/ 17 октября 2019

Q: "динамически с использованием add_host"

- name: Configure sshd
  include: sshd.yml
  delegate_to: '{{ groups.new[0] }}'

A: Можно начать следующую игру с созданной «новой» группой хостов

- hosts: new
  tasks:
    - name: Configure sshd
      include: sshd.yml
...