Время паузы между хостами в Ansible Inventory - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь выполнить следующую задачу в своей книге игр. но пауза не выполняется. Я хочу, чтобы воспроизведение было приостановлено на 30 секунд один раз после удаления каждого хоста.

name: delete host from the NagiosXI
shell: curl -k -XDELETE "https://10.000.00.00/nagiosxi/api/v1/config/host?apikey=qdjcwc&pretty=1&host_name={{ item }}&applyconfig=1"

  - pause:
    seconds: 120

  ignore_error: yes
  with_items:
    - "{{ groups['grp1'] }}"

Может кто-то предложить, если это правильный путь, если вы делаете или предлагаете мне правильный путь. я также использовал модуль serial = 1, но он все еще не работает.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Вы можете использовать паузу под своим циклом:

- name: Pause
  hosts: all
  gather_facts: False

  tasks:
  - name: delete host from the NagiosXI
    shell: curl -k -XDELETE "https://10.000.00.00/nagiosxi/api/v1/config/host?apikey=qdjcwc&pretty=1&host_name={{ item }}&applyconfig=1"
    ignore_errors: True
    with_items: 
       - "{{ groups['grp1'] }}"
    loop_control:
        pause: 120
0 голосов
/ 15 мая 2018

К сожалению, применение нескольких задач к with_items на данный момент невозможно в Ansible, но все еще выполнимо с include directive. Как пример,

Основной файл воспроизведения будет

---

- hosts: localhost
  connection: local
  gather_facts: no
  remote_user: me

  tasks:
    - include: sub_play.yml nagios_host={{ item }}
      with_items:
        - host1
        - host2
        - host3

Sub_play yml, включенный в основную игру, будет:

---
- shell: echo "{{ nagios_host }}"

- pause:
    prompt: "Waiting for {{ nagios_host }}"
    seconds: 5

В этом случае оператор включения выполняется через цикл, который выполняет все задачи в подзадаче yml.

...