copy - today - Archivo de envío de Ansible al primer destino conocido
tags for likes apk (1)
Una opción podría ser simplemente buscar el archivo nrpe.cfg
existente y luego registrar esa ubicación como una variable que se utilizará para la tarea de copia.
Podrías hacerlo a través de una tarea de shell / comando que solo usa find
o loop en un montón de ubicaciones con stat
para verificar si existen.
Entonces puedes tener algo como esto:
- 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
Como Mxx señaló en los comentarios, tenemos una tercera tarea para volver a copiar a alguna ruta predeterminada (potencialmente /etc/nagios/
o cualquier otra ruta realmente) si el archivo nrpe.cfg
no ha sido encontrado por find
.
Para usar stat
lugar de una tarea de shell / comando, podría hacer algo como esto:
- 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}}"
Estoy enviando un archivo de configuración para miles de nodos, debido a algunas personalizaciones hay quizás 5 o 6 rutas para ese archivo (solo hay un archivo para el host pero la ruta puede variar) y no hay una manera fácil de descubrir el ubicación predeterminada con hechos.
Basado en esto, estoy buscando una forma de configurar el "destino" del módulo de copia, como podemos establecer el "src", con un bucle with_first_found
.
Algo como eso:
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"
PD: Estoy enviando nrpe.cfg así que si alguien conoce una mejor manera de encontrar dónde está el nrpe.cfg predeterminado, será mucho más fácil.
EDIT 1 : me las arreglé para trabajar con la ayuda de @ydaetskcoR así:
- 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}}"