1

数千のノードの構成ファイルを送信しています。一部のカスタマイズにより、そのファイルへのパスが 5 つまたは 6 つある可能性があり (ホスト用のファイルは 1 つしかありませんが、パスは異なる可能性があります)、簡単に把握する方法はありません。事実のあるデフォルトの場所。

with_first_foundこれに基づいて、ループで「src」を設定できるように、コピーモジュールの「dest」を設定する方法を探しています。

そんな感じ:

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 を見つけるためのより良い方法を知っていれば、はるかに簡単になります。

EDIT 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}}"
4

1 に答える 1

4

1 つのオプションとして、既存のnrpe.cfgファイルを単純に検索し、その場所をコピー タスクに使用する変数として登録することができます。

シェル/コマンドタスクを使用するfindか、一連の場所をループしてstatそれらが存在するかどうかを確認することで、それを行うことができます。

したがって、次のようなものがあるかもしれません:

- name: find nrpe.cfg
  shell: find / -name nrpe.cfg
  register: nrpe_path

- name: overwrite nrpe.cfg
  copy: src=/foo/{{ ansible_hostname }}/nrpe.cfg dest="{{item}}"
  with_items:
    - nrpe_path.stdout_lines
  when: nrpe_path.stdout != ""
  register: nrpe_copied

- name: copy nrpe.cfg to box if not already there
  copy: src=/foo/{{ ansible_hostname }}/nrpe.cfg dest="{{ default_nrpe_path }}"
  when: nrpe_copied is not defined

Mxxがコメントで指摘した/etc/nagios/ように、nrpe.cfgファイルがfind.

statシェル/コマンド タスクではなく使用するには、次のようにします。

- 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

- name: overwrite nrpe.cfg
  copy: src=/foo/{{ ansible_hostname }}/nrpe.cfg dest="{{item.stat.path}}"
  when: item.stat.exists
  with_items:
    - "{{nrpe_stat.results}}"
于 2015-12-17T22:36:40.650 に答える