Cómo registrar una var en una u otra tarea
Esta colección de tareas no funciona como esperaba:
- name: Find out whether syslog-ng is installed (yum)
tags: syslog_forwarding
command: yum -q list installed syslog-ng
register: syslog_ng_check
failed_when: False
changed_when: False
when: ansible_pkg_mgr == 'yum'
- name: Find out whether syslog-ng is installed (apt)
tags: syslog_forwarding
command: dpkg -s syslog-ng
register: syslog_ng_check
failed_when: False
changed_when: False
when: ansible_pkg_mgr == 'apt'
- name: Configure syslog-ng to forward all logs to syslog servers (apt)
tags: syslog_forwarding
template:
src: syslog_ng_forward_all.conf.j2
dest: /etc/syslog-ng/conf.d/syslog_forward.conf
notify: restart syslog_ng
when: syslog_ng_check is defined and syslog_ng_check.rc == 0
- name: Configure syslog-ng to forward all logs to syslog servers (yum)
tags: syslog_forwarding
template:
src: syslog_ng_forward_all.conf.j2
dest: /etc/syslog-ng/conf.d/syslog_forward.conf
notify: restart syslog_ng
when: syslog_ng_check is defined and syslog_ng_check.rc == 0
Primero quería saber sisyslog-ng
fue instalado en el sistema (el sistema puede ser unCentOS
o unDebian/Ubuntu
), y luego actuar en consecuencia (colocar un archivo de configuración) cuando sea así, y mantener la tarea de colocar la distribución del archivo de configuración independiente. Lo que he descubierto es que si la primera tarea en realidad devuelve 0 y establecesyslog-ng-check.rc
a 0, entonces la segunda tarea hace que sea indefinido nuevamente (o al menos, vacío), aunque la tarea se omita (ya que ningún sistema puede estar usandoyum
yapt
al mismo tiempo, al menos no el mío).
Por supuesto, podría registrar diferentes variables para cadayum
yapt
comprueba, pero luego necesitaría más lógica en mi cláusula when: que quería evitar.
¿Alguna buena idea sobre este?