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

时间:2012-04-25 15:35:03

标签: chef

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

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

我看到两个解决方案:

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

有更好的选择吗?

1 个答案:

答案 0 :(得分: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中摸索是很粗鲁的。 ( - :