我试图让它不只是一个主机。可能吗?
在这种情况下,它当然会在其他主机上失败,因为进程ID在另一台主机上会有所不同。
- name: Fetching PID file from remote server
fetch: src="some.pid" dest=/tmp/ flat=yes fail_on_missing=yes
register: result
ignore_errors: True
- name: Is pid_file matching process ?
wait_for: path=/proc/{{ lookup('file', '/tmp/some.pid') }}/status state=present
when: result|success
register: result2
ignore_errors: True
答案 0 :(得分:0)
您问题的正式答案 - 要让它同时在多个主机上运行,请使用模板文件名或flat=no
,例如:
- name: Fetching PID file from remote server
fetch: src="some.pid" dest="/tmp/{{inventory_hostname}}.pid" flat=yes fail_on_missing=yes
register: result
ignore_errors: True
- name: Is pid_file matching process ?
wait_for: path="/proc/{{ lookup('file', '/tmp/'+inventory_hostname+'.pid') }}/status" state=present
when: result|success
register: result2
ignore_errors: True
但更好的方法是使用一个shell命令替换此任务,该命令一次检查所有内容而不将任何文件提取到ansible主机。
您还可以使用retry/until
子句与命令等待特定的命令结果。