Ansible playbook跳过串行执行中最后一个节点上的任务
我想在4台服务器上逐个运行一些ansible任务,即串行方式。但其间会有一段停顿。所以,我在剧本中最后添加了暂停,但我希望在最后一台服务器上跳过它。否则它将毫无理由地等待。请让我知道如何实现这一点Ansible playbook跳过串行执行中最后一个节点上的任务,ansible,Ansible,我想在4台服务器上逐个运行一些ansible任务,即串行方式。但其间会有一段停顿。所以,我在剧本中最后添加了暂停,但我希望在最后一台服务器上跳过它。否则它将毫无理由地等待。请让我知道如何实现这一点 --- - hosts: server1,server2,server3,server4 serial: 1 vars_files: - ./vars.yml tasks: - name: Variable test pause: minute
---
- hosts: server1,server2,server3,server4
serial: 1
vars_files:
- ./vars.yml
tasks:
- name: Variable test
pause:
minutes: 1
这真是一个有趣的问题,迫使我去寻找一个实际的解决方案。这是我想出的最快的一个 定义
ansible\u play\u hosts\u all
变量如下
该剧的目标主机列表
该var中的主机列表的顺序与在清单中找到的顺序相同
如果您为您的游戏使用默认资源清册,您可以设置一个将触发任务的测试,除非当前主机是该列表中的最后一个主机:
when: inventory_hostname != ansible_play_hosts_all[-1]
正如@Vladimir在下面的评论中所报告的,如果您将播放顺序参数从默认值更改为默认值,此方法将中断。下面的剧本将完成此任务
- hosts: all
serial: 1
vars:
completed: false
tasks:
- set_fact:
completed: true
- block:
- debug:
msg: All completed. End of play.
- meta: end_play
when: "groups['all']|
map('extract', hostvars, 'completed')|
list is all"
- name: Variable test
pause:
minutes: 1
注释
- 看
- 看
- 看
--limit group01a
?