2014-09-04 45 views

回答

3

廚師使用recipes來定義resources,通過主廚客戶端在nodes上執行。

  • 配方基本上是做什麼(腳本)
  • 資源是您要配置的特定元素(一個file,一個service,或package等)
  • 節點是一個定義機器運行廚師客戶

json您的chef-solo設置定義attributes這就像你的廚師可以用它來決定做什麼變數。

所以你的哈希屬性的廚師使用,但你需要一個配方用於配置基於散列資源將您節點

上執行你的情況,你需要配置package resource

package "name" do 
    some_attribute "value" 
    action :action 
end 

包資源支持很多不同的封裝後端,包括apt因此您不必擔心差異(包名稱除外)。

要從哈希安裝軟件包,你可以創建這樣一個祕方:然後

node[:apt][:package].each do |pkg,pkg_data| 
    package pkg do 
     action pkg_data[:action].to_sym 
    end 
end 

個人食譜打包成cookbooks這就好比是食譜的邏輯分組。一般來說,一本食譜可以用於一個軟件,比如httpdmysql

正如Tensibia提到的那樣,請閱讀Vagrant Chef-Solo docco,瞭解將食譜/食譜放在哪裏並從那裏運行。

1

chef.json不執行或定義命令。 它定義了食譜可以使用的節點的屬性。

我recomand讀THISTHIS

一些JSON內容通過流浪產生像在vagrantfile的chef.add_recipe關鍵字定義運行列表屬性。

對於您的使用案例,您應該有一個食譜解析節點['apt']並使用deb_package資源。