Возможный обработчик, использующий операторы 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"