Ansible:整个库存的不同变量

时间:2016-08-17 13:46:14

标签: ansible

我试图让它不只是一个主机。可能吗?

在这种情况下,它当然会在其他主机上失败,因为进程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

1 个答案:

答案 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子句与命令等待特定的命令结果。