2017-05-24 129 views
1

我有一个ansible处理程序,以重新启动主管Ansible服务模块状态无法启动监事重启

--- 
- name: 'restart supervisor' 
    become: true 
    service: 
    name: supervisor 
    enabled: yes 
    state: restarted 

而且处理程序运行,但输出为skipping

RUNNING HANDLER [supervisor : restart supervisor] ******************* 
skipping: [redacted] 

通知发生在最初的规定的服务器,所以当处理程序触发时,主管没有运行。这是为什么它不重新启动?如果我在服务没有运行的情况下ssh进入方框并手动运行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

请发布完整(但最小)的代码。如果你得到“跳过”状态,它与任务内部的内容无关(只要它看起来像问题中的内容),而不是它的内容。 – techraf

+1

你是否在'when'语句中应用你的角色? –

+0

我遇到了同样的问题,试图重新启动datadog代理。你有没有得到任何更新? – Carlos

回答

0

服务模块不会使用restart选项调用服务脚本,但执行启动和停止。主管服务脚本是否有状态选项?如果无法获得状态,则可能根本无法运行重新启动命令。

+0

看看模块代码,这个答案似乎很不精确。 – techraf

+0

是的 - 终于有时间来进行测试了。缺少状态选项不会导致这个问题。 – Jack

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

+0

感谢@Carlos事实上,监督者角色包含在另一个角色的meta/main.yml中。这对我来说是有道理的,因为我们在另一个剧本中使用了监督者角色,但是它包含在该剧本的角色列表中,并且运行良好。我一有机会就会对此进行调查。感谢您的信息! – SomethingOn