Возможный обработчик, использующий операторы if

У меня есть apache playbook, который должен работать на centos 7 и centos 6. Я хочу, чтобы обработчик запускался на основе основной версии дистрибутива. У меня есть обработчик restart apache on 7 и еще один restart apache on 6,

мой handlers/main.yml выглядит так

 ---
 - name: restart apache on 7
  systemd: name=httpd state=restarted

 - name: restart apache on 6
   service: name=httpd state=restarted

Я попытался сделать следующее в моем tasks/main.ymlно, кажется, сталкиваются с проблемами синтаксиса, относящимися к сценарию уведомления.

- name: Copy custom configs
  copy:
   dest: /etc/httpd/conf/
   src: httpd.conf
   owner: root 
  notify: {%if ansible_distribution_major_version >= '7.0' %}restart apache on 7 {%else%} restart apache on 6 {%endif%}

Любые подсказки о том, как написать заявление уведомления для достижения моей цели?

1 ответ

Для общего решения вы можете использовать темы, но я не уверен, почему вы хотели бы использовать systemd модуль вместо service - последние должны охватывать CentOS 6 и 7 без каких-либо различий.

Также используйте арифметическое сравнение для ansible_distribution_major_version вместо сравнения строк, как в вашем примере.


Обработчики слушают темы:

---
- name: restart apache on 7
  systemd: name=httpd state=restarted
  when: ansible_distribution_major_version >= 7
  listen: "restart apache"

- name: restart apache on 6
  service: name=httpd state=restarted
  when: ansible_distribution_major_version < 7
  listen: "restart apache"

и задача, уведомляющая их:

- name: Copy custom configs
  copy:
    dest: /etc/httpd/conf/
    src: httpd.conf
    owner: root 
  notify: "restart apache"
Другие вопросы по тегам