我在我的剧本中尝试以下任务。但是没有执行暂停。我想要在删除每个主机后暂停播放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模块,但它仍无效。
答案 0 :(得分:3)
您可以在循环中使用暂停:
- 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
答案 1 :(得分:1)
不幸的是,目前Ansible中不可能将多个任务应用于with_items,但仍然可以使用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
在这种情况下,include语句在循环上执行,循环执行sub_task yml中的所有任务。