使用with_items时,会通知未更改的处理程序

时间:2017-08-11 08:23:39

标签: ansible

我有Ansible游戏,它会更改服务的配置文件并重新启动配置已更改的服务。我通过通知处理程序来做到这一点。 由于某种原因,没有更改的程序也会被处理程序重新启动。

仅当程序1发生变化时运行游戏:

TASK [programs : Configure programs] **********************************************
changed: [127.0.0.1] => (item=program1)
ok: [127.0.0.1] => (item=program2)
ok: [127.0.0.1] => (item=program3)

RUNNING HANDLER [programs : Restart program1] ****************************************
changed: [127.0.0.1]

RUNNING HANDLER [programs : Restart program2] **************************************
changed: [127.0.0.1]

角色的处理程序文件:

- name: Restart program1
  service:
    name: program1
    state: restarted

- name: Restart program2
  service:
    name: program2
    state: restarted

- name: Restart program3
  service:
    name: program3
    state: restarted

更改配置的任务:

- name: Configure programs
  template:
    src: templates/{{ item }}.conf.j2
    dest: '{{ install_path }}/{{ item }}/{{ item }}.conf'
  notify: 'Restart {{ item }}'
  with_items: '{{ list_of_programs }}'

为什么重新启动Program2会得到通知而不做任何更改?

我正在使用ansible 2.0.0.2

1 个答案:

答案 0 :(得分:0)

这是当前ansible版本的工作原理。

如果任何项目已更改状态,将会执行所有通知处理程序。

如果您认为这是不受欢迎的行为,请参阅此issue并对其进行投票。