Ansible: петли с элементами инвентарных групп - PullRequest
1 голос
/ 06 августа 2020

Я немного застрял в следующей проблеме. У меня есть файл инвентаризации, похожий на:

[server]
server0              ansible_host=10.254.1.35     
server1              ansible_host=10.254.1.46  

[worker]
worker0              ansible_host=10.254.1.10
worker1              ansible_host=10.254.1.12      
worker2              ansible_host=10.254.1.13  

, и я хочу создать роль, которая проверяет связь между всеми машинами из двух групп (server0 для всех рабочих, server2 со всеми рабочими и c). Примерно так:

- hosts: "{{ target | default('server') }}"
  tasks
  - name: Test connectivity
    shell: |
    ping {{ worker_machine_ip }}
    args:
        executable: /bin/bash

где worker_machine_ip должен быть заменен IP-адресом каждого рабочего из файла инвентаризации. Возможно ли это?

1 Ответ

1 голос
/ 06 августа 2020

Вы можете использовать специальную переменную groups, чтобы перечислить все хосты в определенной c группе, а затем другую специальную переменную hostvars, чтобы получить IP того другого хоста, который вы хотите проверить. :

- hosts: "{{ target | default('server') }}"
  
  tasks:
    - name: Test connectivity
      shell: ping -c 3 {{ hostvars[item].ansible_host }}
      loop: "{{ groups['worker'] }}"
      args:
          executable: /bin/bash
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...