Ограничение хостов с помощью шаблона рабочего процесса - PullRequest
0 голосов
/ 06 сентября 2018

Я использую Ansible AWX (Tower) и у меня есть рабочий процесс шаблона, который выполняет несколько шаблонов один за другим, в зависимости от того, было ли предыдущее выполнение успешным.

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

Я пыталсячтобы увидеть, могу ли я переопределить значение «hosts», и это не удалось, как я и ожидал.Как можно заставить его спрашивать меня в начале рабочего процесса о имени хоста / ip, а не о каждом шаблоне внутри рабочего процесса?

1 Ответ

0 голосов
/ 06 сентября 2018

У вас есть опция 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...