我们在下面给出了方案,
如何在节点收敛运行期间使用knife命令更新节点run_list?
答案 0 :(得分:3)
刀具命令旨在用于工作站以管理厨师服务器。它们不得在配方中用于改变行为(因为这不起作用)。
这里会发生什么:
在chef-run中,有人(甚至不是节点本身)更改节点对象并修改其run_list。
当节点结束运行时,它会保存回节点对象(包括运行列表)并覆盖同时执行的操作,你的刀命令是没用的。
如果您希望使用配方更改run_list,则应使用node.run_list
方法,以便为将来的运行修改run_list。
鉴于你的例子你可以使用:
ruby_block 'remove ntp::undo from run list' do
block do
node.run_list.add('role[role c]')
end
only_if { !node.run_list.include?('role[role c]') }
end