2012-04-25 55 views
7

我有一个由厨师管理的服务器。 我需要访问厨师数据库中的某些值,这些值来自不由厨师运行的脚本。如何访问厨师数据包中的当前值?

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

我看到两个解决方案:

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

有更好的选择吗?

+0

是否有理由不能做你想要的厨师食谱? – 2012-05-11 17:51:54

+0

@Jordan:不;这可以从食谱完成,因为似乎是唯一简单的选择。接受的答案建议。 – 9000 2012-05-11 18:49:52

回答

7

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

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

使用厨师REST接口听起来像矫枉过正,并在/ var摸索左右/缓存/厨师只是粗鲁。 ( - :