我正在为数千个节点发送一个配置文件,由于一些自定义,该文件可能有 5 或 6 个路径(主机只有一个文件,但路径可能会有所不同)并且没有一种简单的方法来找出带有事实的默认位置。
基于此,我正在寻找某种方法来设置复制模块的“dest”,就像我们可以使用with_first_found
循环设置“src”一样。
像这样的东西:
copy: src=/foo/{{ ansible_hostname }}/nrpe.cfg dest="{{item}}
with_items:
- "/etc/nagios/nrpe.cfg"
- "/usr/local/nagios/etc/nrpe.cfg"
- "/usr/lib64/nagios/etc/nrpe.cfg"
- "/usr/lib/nagios/etc/nrpe.cfg"
- "/opt/nagios/etc/nrpe.cfg"
PS:我正在发送 nrpe.cfg,因此如果有人知道更好的方法来查找默认 nrpe.cfg 的位置,那将会容易得多。
编辑 1:我已经设法在 @ydaetskcoR 的帮助下工作,如下所示:
- name: find nrpe.cfg
stat:
path: "{{ item }}"
with_items:
- "/etc/nagios/nrpe.cfg"
- "/usr/local/nagios/etc/nrpe.cfg"
- "/usr/lib64/nagios/etc/nrpe.cfg"
- "/usr/lib/nagios/etc/nrpe.cfg"
- "/opt/nagios/etc/nrpe.cfg"
register: nrpe_stat
no_log: True
- name: Copy nrpe.cfg
copy: src=/foo/{{ ansible_hostname }}/nrpe.cfg dest="{{item.stat.path}}"
when: item.stat.exists
no_log: True
with_items:
- "{{nrpe_stat.results}}"