2016-02-16 44 views
2

对于一些初始化服务来说,我有一个很好的操作手册,它们与一些调整大致相似。在顶级的剧本,包括我的角色的两倍,像只有当参数化角色通知一次运行处理程序时才会运行一次

roles: 
    - {role: "my-service", service: webserver} 
    - {role: "my-service", service: scheduler} 

的我的服务角色都有任务,编写init脚本,和处理程序,(重新)启动该服务。 tasks/main.yml看起来是这样的:

- name: setup init scripts 
    template: src=../../service-common/templates/my-service.conf dest=/etc/init/my-{{ service }}.conf 
    notify: 
    - restart my service 

handlers/main.yml有这样的内容:

- name: restart my services 
    service: name=my-{{ service }} state=restarted 

但剧本开始运行,我们只剩下一webserver服务运行,并调度是stop/waiting。我如何让处理程序将这些视为两个单独的通知来处理?

+0

布鲁斯已经解释了这个问题。对于一个解决方案,你可能会看看这个github问题:https://github.com/ansible/ansible/issues/4853 - 不知道现在是否可能。最后的评论是一个用户测试它,它不工作。 – udondan

回答

1

Ansible documentation状态:

处理程序是任务列表,没有真正从常规任务,由一个全球唯一的名称引用的任何不同。

因此,在确定何时/如何调用处理程序时,它不使用任何参数,变量等。只有名字被使用。