lam*_*ont 10
如果您编写自己的纯ruby代码,在LWRP中修改系统,那么您希望使用converge_by包装该代码.它做了两件事,它保护包装的代码,使其在为什么运行模式下不运行.它会自动将资源标记为在运行时更新.
为了使您正在编写的资源具有幂等性(并且不会在每次运行时报告为更新),您通常应该将converge_by包装在对幂等性的检查中.
所以类似于:
use_inline_resources
action :doit do
unless File.exist("/tmp/doit")
converge_by("creating /tmp/doit") do
FileUtils.touch("/tmp/doit")
end
end
end
Run Code Online (Sandbox Code Playgroud)
当然,核心厨师资源已经为您完成了大部分工作,因此对于该示例,其更好地编写如下:
use_inline_resources
action :doit do
file "/tmp/doit"
end
Run Code Online (Sandbox Code Playgroud)
这表明你的第一选择应该是用其他资源组成动作,第二种选择通常是编写自己的converge_by代码.