如何从Chef数据包中访问当前值?

900*_*000 8 chef-infra

我有一个由Chef管理的服务器.我需要从不由Chef运行的脚本中访问存在于cookbook数据包中的一些值.

/*Chef REST API允许访问Chef服务器看到的数据包值.这不是我想要的.每次chef-client运行都可能引入一些协调的变化,包括数据包的变化.如果服务器上的数据已经更改但chef-client尚未在本地运行,则本地设置和服务器端数据包可能不同步.*/

我看到两个解决方案:

  • 解析/导入数据包文件,/var/cache/chef/cookbooks/<book-name>因为它或多或少是正常的Ruby.
  • 在配方中,将数据包中的相关数据转储到可从我的脚本访问的普通文件中.

有更好的选择吗?

Tim*_*ter 7

将数据从节点哈希或数据包转储到单独的文件中是在Chef服务器和节点上运行的脚本之间进行通信的好方法.如果您的脚本可以解析JSON,那么它非常简单:

file "/etc/script.json" do
  owner "root"
  group "root"
  mode 0644
  content node[:whatever].to_json
 end
Run Code Online (Sandbox Code Playgroud)

使用Chef REST界面听起来有点矫枉过正,在/ var/cache/chef中摸索是很粗鲁的.( - :