8

我有一台由 Chef 管理的服务器。我需要从不是由 Chef 运行的脚本访问一些存在于食谱数据包中的值。

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

我看到两个解决方案:

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

有更好的选择吗?

4

1 回答 1

7

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

file "/etc/script.json" do
  owner "root"
  group "root"
  mode 0644
  content node[:whatever].to_json
 end

使用 Chef REST 接口听起来有点矫枉过正,在 /var/cache/chef 中摸索是不礼貌的。(-:

于 2012-04-26T12:03:19.960 回答