ansible处理程序仅在从参数化角色通知时运行一次

时间:2016-02-16 20:31:09

标签: linux ansible upstart

我有一个针对某些初始化服务的ansible playbook,它与一些调整大致相似。在顶级剧本中,我将角色包括两次,如

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

my-service角色包含编写初始脚本和处理程序的任务,这些任务(重新)启动服务。 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

但是在Playbook运行之后,我们只剩下webserver服务正在运行,而调度程序是stop/waiting。如何让处理程序将这些视为两个单独的通知进行处理?

1 个答案:

答案 0 :(得分:1)

Ansible documentation州:

  

处理程序是由全局唯一名称引用的任务列表,与常规任务没有任何不同。

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