node.override 厨师食谱资源中的属性已设置但未被使用

node.override attribute in chef recipe resource gets set but not getting used

我的配方中有一个自定义资源覆盖了节点属性。当我在同一配方的后续资源部分中使用该节点属性时,它使用的是说明书属性文件中设置的默认属性,而不是自定义配方资源中设置的值。在 chef-client 运行 之后,节点上的属性值显示了预期的覆盖值。是什么导致配方不使用覆盖属性?

我假设您正在尝试覆盖 node['something']['content'] 并且您的食谱看起来像:

my_resource 'a name' do
  action :run
end

file '/tmp/file' do
  content node['something']['content']
end

自定义资源的 :run 操作中定义的代码在收敛时执行,而文件资源中使用的属性 node['something']['content'] 在编译时读取。

作为参考,厨师客户 运行 可以描述为:

  • 库加载
  • 属性编译(这是设置属性默认值的地方)
  • 配方编译(这是您的 my_resource 和文件资源使用其参数构建的地方)
  • 资源收敛(这是执行 :run 操作代码和覆盖您的属性的地方)。
  • 报告(这是您的覆盖属性值发送到厨师服务器的地方)。