2012-04-25 33 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摸索左右/緩存/廚師只是粗魯。 ( - :