我有一个由Chef管理的服务器。 我需要从不由Chef运行的脚本中访问存在于cookbook数据包中的一些值。
/ * Chef REST API允许访问Chef服务器看到的数据包值。这不是我想要的。每个chef-client
运行可能会引入一些协调的更改,包括数据包的更改。如果服务器上的数据已经更改但chef-client
尚未在本地运行,则本地设置和服务器端数据包可能不同步。 * /
我看到两个解决方案:
/var/cache/chef/cookbooks/<book-name>
下的数据包文件,因为它或多或少是正常的Ruby。有更好的选择吗?
答案 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中摸索是很粗鲁的。 ( - :