Как зарегистрировать переменную в той или иной задаче
Эта коллекция задач не работает, как я надеялся:
- 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
Я хотел сначала выяснить,syslog-ng
был установлен в системе (система может бытьCentOS
илиDebian/Ubuntu
), а затем действуйте соответствующим образом (поместите файл конфигурации), когда это так, и оставьте задачу по независимому распределению файлов конфигурации. Я обнаружил, что если первая задача на самом деле возвращает 0 и устанавливаетsyslog-ng-check.rc
до 0, то вторая задача снова делает ее неопределенной (или, по крайней мере, пустой), даже если задача пропущена (поскольку ни одна система не может использоватьyum
а такжеapt
в то же время, по крайней мере, не мое).
Конечно, я мог бы зарегистрировать разные переменные для каждогоyum
а такжеapt
проверяет, но тогда мне понадобится больше логики в предложении when:, которого я хотел бы избежать.
Есть хорошие идеи на этот счет?