我们发现 LWRP 操作(尤其是库)中的 ruby 代码总是在收敛阶段执行(也没有 ruby_block 资源!)。这是预期的行为吗?我们没有找到任何关于此的特定文档,并且知道 ruby 代码通常在编译阶段执行,这让我们有点困惑。我们使用 Chef 12.0.3。
这是一个小例子:
在食谱/default.rb 中:
time = Time.new
puts "Current Time : " + time.inspect
converge_test_my_resource "test_resource" do
action :install
end
在提供者/my_resource.rb 中:
action :install do
time = Time.new
puts "Current Time : " + time.inspect
end
厨房的输出是:
Compiling Cookbooks...
Current Time : 2016-01-18 16:37:52 +0100
Converging 1 resources
Recipe: converge_test::default
* converge_test_my_resource[test_resource] action install
Current Time : 2016-01-18 16:37:52 +0100
(up to date)
所以你看到时间戳的第一个打印是在编译阶段,但时间戳的下一个打印是在收敛阶段。
提前致谢!