我们在下面给出了场景,
- 我们的节点有带有“role a”和“role b”的run_list。节点收敛并运行 run_list。
- 在步骤 1 的节点收敛运行期间,我们尝试使用刀命令将另一个“角色 c”添加到节点 run_list。根据刀命令输出成功添加。
- 如果我们检查刀节点状态,在节点收敛完成后。我们在步骤 2 中添加的“角色 c”尚未添加到节点 run_list
如何在节点收敛运行期间使用刀命令更新节点 run_list?
我们在下面给出了场景,
如何在节点收敛运行期间使用刀命令更新节点 run_list?
刀命令旨在在工作站上用于管理厨师服务器。不得在配方中使用它们来更改行为(因为这不起作用)。
这里会发生什么:
在 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