Como registrar um var em uma ou outra tarefa
Esta coleção de tarefas não funciona como eu esperava:
- 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
Eu queria primeiro descobrir sesyslog-ng
foi instalado no sistema (o sistema pode ser umCentOS
ou umDebian/Ubuntu
) e, em seguida, aja de acordo (coloque um arquivo de configuração) quando for o caso, e mantenha a tarefa de colocar a distribuição do arquivo de configuração independente. O que descobri é que, se a primeira tarefa retornar 0 e definirsyslog-ng-check.rc
para 0, a segunda tarefa a torna indefinida novamente (ou pelo menos vazia), mesmo que a tarefa seja ignorada (pois nenhum sistema pode estar usandoyum
eapt
ao mesmo tempo, pelo menos não o meu).
Claro, eu poderia registrar variáveis diferentes para cadayum
eapt
verificações, mas então eu precisaria de mais lógica na minha cláusula when: que eu queria evitar.
Alguma boa idéia sobre este?