我有一台由 Chef 管理的服务器。
我需要从不是由 Chef 运行的脚本访问一些存在于 Recipe 数据包中的值。
/* Chef REST API 允许访问 Chef 服务器所看到的数据包值。这不是我想要的。每个chef-client
run 可能会引入许多协调的更改,包括数据包中的更改。如果服务器上的数据已经更改,但 chef-client
尚未在本地运行,本地设置和服务器端数据包可能不同步。 */
我看到两个解决方案:
/var/cache/chef/cookbooks/<book-name>
下的数据包文件因为它或多或少是普通的Ruby。 有更好的选择吗?
最佳答案
将节点哈希或数据包中的数据转储到单独的文件中是在 Chef 服务器和节点上运行的脚本之间进行通信的好方法。如果您的脚本可以解析 JSON,那么这真的很容易:
file "/etc/script.json" do
owner "root"
group "root"
mode 0644
content node[:whatever].to_json
end
使用 Chef REST 接口(interface)听起来有点矫枉过正,在/var/cache/chef 中摸索是不礼貌的。 (-:
关于chef-infra - 如何从 Chef 数据包中访问当前值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10318919/