Ansible:如果任务在一台主机上完成,则转到下一个任务
在ansible中,我需要检查两台主机上是否有可用的文件。但是,如果文件在一台主机上可用,我需要取消另一台主机上的任务,并转到下一个任务。我之所以要求这样做,是因为只有当该特定文件可用并且该文件可以随机写入任何主机时,才能执行下一个任务 下面的剧本正是你想要的:Ansible:如果任务在一台主机上完成,则转到下一个任务,ansible,Ansible,在ansible中,我需要检查两台主机上是否有可用的文件。但是,如果文件在一台主机上可用,我需要取消另一台主机上的任务,并转到下一个任务。我之所以要求这样做,是因为只有当该特定文件可用并且该文件可以随机写入任何主机时,才能执行下一个任务 下面的剧本正是你想要的: --- - hosts: - server1 - server2 gather_facts: False vars: file_name: 'foo.bar' tasks: - name: wa
---
- hosts:
- server1
- server2
gather_facts: False
vars:
file_name: 'foo.bar'
tasks:
- name: wait for file
wait_for:
path: '{{ file_name }}'
state: present
timeout: 30
ignore_errors: True
- name: stat
stat:
path: '{{ file_name }}'
register: result
- name: next
debug:
msg: "File {{ file_name }} available on {{ ansible_host }}"
when: result.stat.isreg is defined and result.stat.isreg
输出为:
PLAY [server1,server2] *********************************************************
TASK [wait for file] ***********************************************************
ok: [server1]
fatal: [server2]: FAILED! => {"changed": false, "elapsed": 3, "msg": "Timeout when waiting for file foo.bar"}
...ignoring
TASK [stat] ********************************************************************
ok: [server1]
ok: [server2]
TASK [next] ********************************************************************
skipping: [server2]
ok: [server1] => {
"msg": "File foo.bar available on server1"
}
PLAY RECAP *********************************************************************
server1 : ok=3 changed=0 unreachable=0 failed=0
server2 : ok=0 changed=0 unreachable=0 failed=0
您可以使用stat模块检查如下状态,也可以在playbook中的hosts:下添加序列:1
- 统计: 路径:/path/to/something 注册号码:p
- 调试: msg:“路径存在并且是一个目录” 当:p.stat.isdir已定义且p.stat.isdir
有关更多详细信息stat模块可用于检查statsHi,感谢您的回答。但是当我尝试调试时,调试任务在一台服务器上失败。此外,我需要的是停止playbook on file checking任务,直到文件在其中一台服务器上可用。这是另一个并行任务的要求,该任务也与我的playbook一起运行。当其他任务仅完成时,我可以继续其余的任务。当该任务完成时,它会将一个文件随机写入其中一个服务器。我试着用wait_for module和stat module完成这项工作,但轮询都没有按我要求的方式运行。增强应答再次感谢。但即使在server1上找到该文件,这仍将在server2上等待30分钟。正如我提到的,如果在一台服务器上找到该文件,我需要立即转到下一个任务。谢谢,这正是我要找的!