我创建了用于启用某些 Windows 功能并使用WindowsRebootHandler重新启动机器的说明书。如下代码所示,我使用 ruby_block 在后续运行中不执行相同的操作。
windows_batch 'Enable_MS_Feature' do
code <<-EOH
#My script
EOH
notifies :create, "ruby_block[WindowsFeature_Install]", :immediately
notifies :request, 'windows_reboot[60]'
not_if { node.attribute?("WindowsFeature_Installed") }
end
ruby_block "WindowsFeature_Install" do
block do
node.set['WindowsFeature_Installed'] = true
node.save
end
action :nothing
end
出于测试目的,我必须删除WindowsFeature_Installed
属性才能再次执行该操作。所以,我使用了下面的命令。
knife exec -E "nodes.transform(:all) {|n| n.delete('WindowsFeature_Installed');n.save() }"
上面的命令没有删除节点属性。当我使用刀命令搜索相同的属性时,它列出了所有节点。
knife search node "WindowsFeature_Installed:true"
为了进一步调试,已启用命令的详细输出,并且来自 chef-server 的所有 HTTP 响应都正常。
此外,尝试检查 chef-server 日志以获取错误详细信息。但由于存在与 chef-server 包相关的许多进程日志,因此无法识别问题。
那么,如何删除此属性以再次执行配方操作?或者将在哪个厨师服务器日志中记录节点属性删除详细信息?任何指针都会有所帮助。