如何在Ansible脚本中实现主机间30秒时间延迟?
在Ansible的DR主机组任务间添加30秒延迟的方法
嘿,要给DR主机组里的每台主机之间插入30秒的处理延迟是吧?这里有个简单靠谱的实现方案,直接修改你的Playbook就能搞定:
核心思路是让Ansible逐个处理主机(而非默认的并行处理),在每台主机的所有任务执行完成后,暂停30秒再处理下一台。修改后的完整Playbook如下:
- hosts: dr become: true become_user: root serial: 1 # 关键配置:一次只处理一台主机 tasks: - name: 执行yum命令并记录信息 shell: "hostname >> /tmp/ycu.txt; yum history | head -5 >> /tmp/ycu.txt" - name: 将目标文件抓取到控制节点 fetch: src: /tmp/ycu.txt dest: /tmp/{{ inventory_hostname }}/ flat: yes - name: 主机间添加30秒延迟 pause: seconds: 30
关键配置说明:
serial: 1:这个参数强制Ansible串行处理主机组内的机器,每次只对一台主机执行所有tasks,完成后再切换到下一台。pause模块:在每台主机的任务全部执行完毕后,触发30秒的暂停,刚好满足你“各主机之间延迟30秒”的需求。
如果你不想完全串行(比如允许同时处理N台,每N台处理完后延迟),可以把serial: 1改成你想要的数字,比如serial: 2,这样每次处理2台主机,处理完后暂停30秒再继续下一批。
内容的提问来源于stack exchange,提问作者LinServFaulter
相关产品推荐
相关产品推荐

