当您将资源分配给 Chef 配方中的变量时会发生什么?
What happens when you assign a resource to a variable in a Chef recipe?
我正在查看 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
当它将资源分配给安装变量时,它会执行 resource/provider 吗?也许它会立即执行?而不是将编译和收敛的两阶段过程作为单独的阶段进行?
它不会改变任何东西,DSL 方法总是有一个 return 值,通常您会忽略它,所以它会被丢弃。具体来说,每个 DSL 方法 returns 已编译的资源对象,在本例中是 ConsulInstallation
class.
的一个实例
在这种情况下使用它是因为我的模式对 Chef 资源进行依赖 inversion/injection。稍后您可以看到 install.consul_program
正在执行反向命令查找,因为 consul_installation
资源有多个底层提供程序,这些提供程序在运行时可能会有所不同。
我正在查看 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
当它将资源分配给安装变量时,它会执行 resource/provider 吗?也许它会立即执行?而不是将编译和收敛的两阶段过程作为单独的阶段进行?
它不会改变任何东西,DSL 方法总是有一个 return 值,通常您会忽略它,所以它会被丢弃。具体来说,每个 DSL 方法 returns 已编译的资源对象,在本例中是 ConsulInstallation
class.
在这种情况下使用它是因为我的模式对 Chef 资源进行依赖 inversion/injection。稍后您可以看到 install.consul_program
正在执行反向命令查找,因为 consul_installation
资源有多个底层提供程序,这些提供程序在运行时可能会有所不同。