我有两部戏剧,每部都有一项任务。
第一个 Play 检查是否/var/test.dat
存在于每个目标上。只有当第一次播放成功时,我才希望运行第二次播放,它并行执行这些脚本。
如果第一次播放失败,即 test.dat 不存在,我希望在不执行第二次播放的情况下终止剧本。为此,我已将 setany_errors_fatal
设置为 true
我需要将 ansible Playstrategy
设置为免费,因为每个脚本都需要 30 分钟才能完成。
我对ansible的理解有限。
我知道,如果我将两个任务都放在一个 PLAY 下,并设置释放这两个任务的策略,那么这两个任务将并行运行,这是我不想要的。
---
- name: Play 1- check for login and script
hosts: all_hosts
any_errors_fatal: true
strategy: free
tasks:
- name: Check script existence
shell: "ls /var/test.dat"
register: checkscript
- name:
fail:
msg: "script {{ scriptdet }} missing on {{ inventory_hostname }}"
when: checkscript.rc != 0
- name: Play 2- Run scripts
hosts: all_hosts
user: "{{ USER }}"
strategy: free
tasks:
- name: Execute backup script
shell: "{{ scriptdet }}"
args:
chdir: ~/..
我尝试了上面的剧本,但是尽管第一个剧本的任务失败了,但我看到第二个剧本执行了。
你能建议我怎样才能让它工作吗?