我有一个ansible处理程序来重启主管
---
- name: 'restart supervisor'
become: true
service:
name: supervisor
enabled: yes
state: restarted
处理程序运行但输出为skipping
RUNNING HANDLER [supervisor : restart supervisor] *******************
skipping: [redacted]
通知发生在服务器的初始配置上,因此当处理程序触发时,主管不会运行。这是为什么它没有重新启动?如果我进入框中并在服务未运行时手动运行sudo service supervisor restart
,则启动就可以了。
我甚至试过像这样的start supervisor
处理程序,它做了同样的事情......跳过和主管从未开始过?
---
- name: 'start supervisor'
become: true
service:
name: supervisor
enabled: yes
state: started
我正在运行v2.3.0.0-1但是使用v2.2.2.0也遇到了这个问题。
有没有其他人与主管讨论过这个问题?有替代方法吗?我做错了吗?
- 更新 -
有一个when
子句正在应用该角色,因此我决定删除它以查看它是否是罪魁祸首。再次跳过......这是输出。
RUNNING HANDLER [supervisor : restart supervisor] ******************************************************************************************************************************************************
skipping: [ansible1] => {
"changed": false,
"skip_reason": "Conditional result was False",
"skipped": true
}
如果ansible会告诉我导致它跳过的条件会很好,因为在删除when
后,我的ansible代码中没有任何理由会导致它跳过。 service
模块内部必须存在导致此内容的内容:s
答案 0 :(得分:1)
处理程序是依赖角色的一部分吗? (即:定义处理程序的角色作为meta / main.yml中的依赖项包含在您的角色中)。因为我已经看到了这种情况并且发生了同样奇怪的"skip_reason": "Conditional result was False",
。更改从meta/main.yml:dependencies
到playbook.yml:roles
的相关角色的方式使其有效。
如果拥有处理程序的角色作为playbook.yml:roles
包含的角色的元依赖项包含在内,我也看到它有效。
不确定这是一个我无法理解的错误或棘手的行为。这发生在Ansible-playbook 2.3.2.0
上答案 1 :(得分:0)
服务模块不会使用restart选项调用服务脚本,但会启动和停止。主管服务脚本是否具有状态选项?如果无法获取状态,则可能根本不运行restart命令。