Я создаю пьесу с этой пьесой:
На хостах hypervisors
:
- получить список виртуальных машин со всех хостов
- используйте модуль
add_host
, чтобы добавить их всех в новую группу инвентаря под названиемguests
Мой инвентарь:
[hypervisors]
host1
host2
Моя книга:
- hosts: hypervisors
- shell: virsh list | awk 'NR>2' | awk '{print $2}'
register: result_virsh
- add_host:
name: "{{ item }}"
group: "guests"
with_items: "{{ result_virsh.stdout_lines }}"
Модуль add_host
обходит цикл хоста воспроизведения и запускается только один раз для всех хостов в воспроизведении.
Затем он вызывается один раз (для host1), это частный случай использования этого модуля (см. Ссылку выше), как если бы переменная run_once
была неявно зафиксирована на true
.
Как я могу использовать его для всех хостов в группе hypervisors
?
РЕДАКТИРОВАТЬ: пример воспроизведения его на вашем компьютере только с localhost
Создайте файл / tmp / host1_test для имитации возвращения гостей vm1 и vm2:
vm1
vm2
Создайте файл / tmp / host2_test для имитации возвращения гостей vm3 и vm4:
vm3
vm4
Используйте этот инвентарь (test_add_host.ini) с двумя хостами, оба с фиксированным IP-адресом 127.0.0.1:
[hypervisors]
host1 ansible_host=127.0.0.1 test_filename=/tmp/host1_test
host2 ansible_host=127.0.0.1 test_filename=/tmp/host2_test
Воспользуйтесь этим учебником (test_add_host.yml):
- hosts: hypervisors
gather_facts: no
tasks:
- shell: "cat {{ test_filename }}"
register: result_virsh
- add_host:
name: "{{ item }}"
group: "guests"
with_items: "{{ result_virsh.stdout_lines }}"
- hosts: guests
gather_facts: no
tasks:
- local_action: ping
Вызовите эту книгу локально с помощью команды:
ansible-playbook -c local -i test_add_host.ini test_add_host.yml
- Хосты первого игрового вызова host1 и host2
- Хосты второго вызова воспроизведения vm1 и vm2
Что мне делать, чтобы вызвать все хосты (vm1, vm2, vm3 и vm4) во второй игре?