Chef infra Chef在同一资源块中通知,作为仅\u if或不\u if

Chef infra Chef在同一资源块中通知,作为仅\u if或不\u if,chef-infra,Chef Infra,如果我在同一块中有一个通知作为only_If,only_If(如果它的计算结果为false)会阻止通知吗?似乎找不到任何例子 在调试中,似乎无论如何都会发生通知,获得所需行为的唯一方法是在接收通知的块中放置另一个only_if 例如,复制rc.local文件并仅为某些服务器运行它,但保持执行块通用,以便可以为任何服务器调用它: cookbook_file '/etc/rc.d/rc.local' do source 'rc.local.servername' owner 'root'

如果我在同一块中有一个通知作为only_If,only_If(如果它的计算结果为false)会阻止通知吗?似乎找不到任何例子

在调试中,似乎无论如何都会发生通知,获得所需行为的唯一方法是在接收通知的块中放置另一个only_if

例如,复制rc.local文件并仅为某些服务器运行它,但保持执行块通用,以便可以为任何服务器调用它:

cookbook_file '/etc/rc.d/rc.local' do
  source 'rc.local.servername'
  owner 'root'
  group 'root'
  mode '0744'
  action :create
  only_if { node.name =~ /servername/ }
  notifies :run, 'execute[run_rc_local]'
end

execute 'run_rc_local' do
  command '/etc/rc.local'
  user  'root'
  group 'root'
  action :nothing
end
在这种情况下,即使唯一的_if计算结果为false,执行块似乎也会得到通知。只是找不到任何明确说明这一点的文档

下面是输出的样子。。。在运行过程中,我们看到:

  * cookbook_file[/etc/rc.d/rc.local] action create (skipped due to only_if)
  * execute[run_rc_local] action nothing (skipped due to action :nothing)
但在底部,延迟行动发生的地方,有:

 * execute[run_rc_local] action run

是的,我们搜索了所有的烹饪书,并确保执行块没有收到任何其他通知。

您能否显示
chef client
运行的输出(更新问题),该输出显示
执行
块收到通知?输出添加到原始问题中。我们已经做了更多的测试,并且非常确信这就是它的工作方式——即使由于only_if语句导致块未运行,notify也会激发。如果能在Chef文档中看到这一点就好了。这很奇怪,因为
通知
仅在“状态更改”时适用。我使用的是
chef client 16.2.73
,我没有看到这种行为。当(i)
节点时,“通知的”资源未运行。名称不匹配(ii)文件是
(最新)
。您能否显示
厨师长客户端运行的输出(更新问题),该输出显示
执行
块已收到通知?将输出添加到原始问题中。我们已经做了更多的测试,并且非常确信这就是它的工作方式——即使由于only_if语句导致块未运行,notify也会激发。如果能在Chef文档中看到这一点就好了。这很奇怪,因为
通知
仅在“状态更改”时适用。我使用的是
chef client 16.2.73
,我没有看到这种行为。当(i)
节点名称不匹配(ii)文件为
(最新)
时,“通知”资源未运行。