将资源分配给Chef配方中的变量时会发生什么?

时间:2016-03-24 04:48:58

标签: chef lwrp

我正在查看github上的johnbellone/consul-cookbook,我看到以下内容:

install = consul_installation node['consul']['version'] do |r|
 if node['consul']['installation']
   node['consul']['installation'].each_pair { |k, v| r.send(k, v) }
 end
end

当它将资源分配给安装变量时,是否会执行资源/提供程序?也许它马上执行它?而不是将两阶段的编译和融合过程分开进行?

1 个答案:

答案 0 :(得分:2)

它不会改变任何东西,DSL方法总会有一个返回值,通常你会忽略它,所以它会被抛弃。具体来说,每个DSL方法都返回已编译的资源对象,在本例中为ConsulInstallation类的实例。

这是在这种情况下使用的,因为我的模式用于为Chef资源进行依赖性反转/注入。稍后您可以看到install.consul_program正在进行反转命令查找,因为consul_installation资源有多个基础提供程序,这些提供程序在运行时可能会有所不同。