Ansible处理程序没有解雇?

时间:2017-05-04 15:38:59

标签: ansible ansible-2.x

我对Ansible(运行版本2.2.1.0)很新,所以到目前为止我一直在关注基本目录结构。最近我尝试将一些任务移到handlers区域,但我得到了一些奇怪的行为。

我的树状结构如下:

host_inventory
host_vars
site.yml
roles
  common
    handlers
      main.yml
    meta
      main.yml
    tasks
      main.yml
    vars
      main.yml

实际上只有两个相关文件(我认为)。

此版本的tasks / main.yml会调用处理程序:

角色/普通/任务/ main.yml:

---
  - name: make test file
    shell: "touch /home/hello"
    notify: say goodbye

和角色/ common / handlers / main.yml:

---
  - name: say goodbye
    shell: "touch /home/goodbye"

这不会调用处理程序:

角色/普通/任务/ main.yml

---
  - name: test for file
    stat:
      path: /home/hello
    notify: say goodbye

角色/普通/处理/ main.yml

---
  - name: say goodbye
    shell: "echo something"

我无法理解为什么我的stat任务没有调用他们的处理程序。

任何人都可以提供一些见解吗?我觉得我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:2)

只有在任务状态为changed时才会通知处理程序 在您的示例中,shell任务始终处于changed状态,但stat任务始终处于ok状态。

有关详细信息,请参阅documentation