我对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
任务没有调用他们的处理程序。
任何人都可以提供一些见解吗?我觉得我错过了一些明显的东西。
答案 0 :(得分:2)
只有在任务状态为changed
时才会通知处理程序
在您的示例中,shell
任务始终处于changed
状态,但stat
任务始终处于ok
状态。
有关详细信息,请参阅documentation。