如何仅根据条件通知Ansible中的处理程序?

如何仅根据条件通知Ansible中的处理程序?,ansible,conditional-statements,notify,Ansible,Conditional Statements,Notify,我想通过以下方式通知我角色中的处理程序: -名称:通知处理程序 通知:我的处理程序 当:这是真的吗 但Ansible只是抱怨: 错误!在任务中未检测到模块/操作 我尝试过各种楔子,例如: -名称:通知处理程序 梅塔:努普 通知:我的处理程序 当:这是真的吗 但这同样令人哀叹: [警告]:noop任务不支持有条件 有什么建议吗 请注意,运行任务不足以通知处理程序,您还需要创建更改结果的任务 借助Ansible中的选项,您可以在任何任务上实现更改结果。 然后,做一个简单的测试可能是一种选择 我还有其

我想通过以下方式通知我角色中的处理程序:

-名称:通知处理程序 通知:我的处理程序 当:这是真的吗 但Ansible只是抱怨:

错误!在任务中未检测到模块/操作

我尝试过各种楔子,例如:

-名称:通知处理程序 梅塔:努普 通知:我的处理程序 当:这是真的吗 但这同样令人哀叹:

[警告]:noop任务不支持有条件 有什么建议吗


请注意,运行任务不足以通知处理程序,您还需要创建更改结果的任务

借助Ansible中的选项,您可以在任何任务上实现更改结果。 然后,做一个简单的测试可能是一种选择

我还有其他一些想法,但最终没有什么意义:

暂停:但暂停时间不能少于一秒钟 断言:但是断言同样的条件感觉很傻,你还需要把它放在变更的_中,以通知处理程序。你仍然可以断言:那是真的,但感觉同样愚蠢。 也许我能想到的最愚蠢的想法是一个失败的任务和一个失败的错误。 命令:“真的”与上面的相比可能不那么愚蠢,但我仍然不完全相信 根据剧本:

-主持人:本地 收集事实:不 变量: 这件事是真的:真的 任务: -调试: msg:'通知处理程序' 瓦尔:这是真的 ^-可能是msg的替代选项: 改变时:这件事是真的 通知: -我 处理程序: -姓名:我 调试: msg:'我已收到通知' 概述如下:

PLAY [local] *******************************************************************

TASK [debug] *******************************************************************
changed: [local] => {
    "msg": "Notifying handlers"
}

RUNNING HANDLER [me] ***********************************************************
ok: [local] => {
    "msg": "I have been notified"
}

PLAY RECAP *********************************************************************
local                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

@β、 εηοιτ。βε显示了一个更倾向于调试的解决方案,但我认为assert的输出更干净

调试代码:

-名称:带调试 调试:msg= 更改时间:true 当:有些东西改变了 通知:“做事” 断言代码:

-名称:带assert 断言:{that:true,quiet:true} 更改时间:true 当:有些东西改变了 通知:“做事” 调试输出:


感谢您的编辑和解决方案。梅塔:我不知道我可以在“``之后添加yaml并得到语法高亮显示。主题:是的,既然你提到了它,根本原因一定是任务无法确定它是否产生了改变的条件。同意的断言感觉不正确,但另一方面输出更干净,请参见下面的答案。前几天我使用了它,感谢你。我喜欢。 TASK [mytask : with debug] ***************************************************** changed: [server] => { "msg": "" } RUNNING HANDLER [mytask : do stuff] ******************************************** changed: [server] TASK [mytask : with assert] **************************************************** changed: [server] RUNNING HANDLER [myhandlers : do stuff] **************************************** changed: [server]