2

我有一个需要在 centos 7 和 centos 6 上运行的 apache 剧本。我希望根据分发主要版本触发处理程序。我有一个处理程序调用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%}

关于如何编写通知语句以实现我的目标的任何线索?

4

1 回答 1

2

对于一般解决方案,您可以使用topic,但我不确定您为什么要使用systemdmodule 而不是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"
于 2017-04-02T14:52:53.160 回答