我的处理程序不是由剧本或任务运行的
我具有以下目录结构:
<project>
- playbook.yml
- <roles>
-<handler>
- main.yml
-<meta>
-<tasks>
-main.yml
问题是永远不会调用处理程序。
tasks/main.yml:
- name: run task1
command: run_task
notify: "test me now"
handler/main.yml:
- name: tested
register: val1
listen: "test me now"
剧本仅调用task / main.yml并具有host:all
我是否需要包含/导入?我在剧本中尝试过,但没有帮助
答案 0 :(得分:0)
以下播放方式有效
tasks:
- include_tasks: tasks/main.yml
- meta: flush_handlers
- debug: var=val1.stdout
handlers:
- import_tasks: handlers/main.yml
handler / main.yml 中缺少模块。这将导致:
错误!在任务中未检测到任何操作。这通常表示拼写错误的模块名称或错误的模块路径。
使用 handler / main.yml 中的某些模块。例如:
- name: tested
command: "echo 'running handler'"
register: val1
listen: "test me now"
运行这样的游戏可以得到:
val1.stdout: running handler
答案 1 :(得分:0)
您应具有https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html中描述的结构,因此该目录应称为handlers
(而不是handler
)