У вас есть опция set_stats
.
Предположим, у вас есть следующий инвентарь:
- 10.100.1.1
- 10.100.1.3
- 10.100.1.6
Ваш инвентарь называется MyOfficeInventory . Первое правило заключается в том, что вам нужен этот инвентарь во всех ваших шаблонах, чтобы играть с хостом из первого.
Я хочу пропинговать только мою 10.100.1.6 машину, поэтому в шаблоне я выбираю MyOfficeInventory и ограничиваюсь 10.100.1.6 .
Если мы сделаем:
---
- name: Ping
hosts: all
gather_facts: False
connection: local
tasks:
- name: Ping
ping:
Получаем:
TASK [Ping] ********************************************************************
ok: [10.100.10.6]
Cool! Таким образом, из MyOfficeInventory у меня выбран единственный хост, проверенный на пинг. Так что теперь, в моем рабочем процессе, у меня есть следующий шаблон с выбранным * MyOfficeInventory ** (это правило, как сказано). Если я буду пинговать, я буду пинговать их всех, если вы не ограничитесь снова, поэтому давайте сделаем магию:
В вашем первом шаблоне выполните:
- name: add devices with connectivity to the "working_hosts" group
group_by:
key: working_hosts
- name: "Artifact URL of test results to Tower Workflows"
set_stats:
data:
myinventory: "{{ groups['working_hosts'] }}"
run_once: True
Будьте осторожны, потому что для вашей пьесы,
groups['all']
означает:
"groups['all']": [
"10.100.10.1",
"10.100.10.3",
"10.100.10.6"
]
А с вашей новой группой working_hosts вы получаете только свой текущий хост:
"groups['working_hosts']": [
"10.100.10.6"
]
Итак, теперь у вас есть новый инвентарь инвентарь.
Используйте это так в остальных ваших Playbooks, назначенных для ваших шаблонов:
- name: Ping
hosts: "{{ myinventory }}"
gather_facts: False
tasks:
- name: Ping
ping:
Ваша переменная инвентаря будет передана, и вы получите:
ok: [10.100.10.6]
На шаг впереди. Вы хотите выбрать хост из опроса?
Создайте один с вашим именем хоста и добавьте ваш первый Playbook как:
- name: Ping
hosts: "{{ mysurveyhost }}"
gather_facts: False