我有一个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%}
有关如何编写通知语句以实现目标的任何线索?
答案 0 :(得分:1)
对于一般解决方案,您可以使用topics,但我不确定您为什么要使用setInterval
模块而不是systemd
- 后者应涵盖CentOS 6和7没有任何区别。
同样使用service
的算术比较,而不是像示例中的字符串比较。
处理主题的处理程序:
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"