2013-03-12 29 views
2

環境:apache2如何使用apache2主廚食譜安裝?

  • CentOS 6的
  • 廚師10

我下載apache2的食譜從community.opscode然後我跑在客戶端節點# chef-client 。安裝和服務啓動成功。

[2013-03-12T15:30:00+09:00] INFO: Processing package[apache2] action install(apache2::default line 20) 

當我去食譜/ Apache2的/食譜/ default.rb,沒有線,說action:install 我很新的紅寶石讓我想不通的地方是是代碼行負責安裝。

此外,如果正在安裝apache2,那麼配方中是否包含某種安裝軟件包?說,.rpm包?如果是,那麼完整的路徑是什麼?

在此先感謝!

編輯:

我已經學會了包

package "apache2" do 
    package_name node['apache']['package'] 
end 

action :install爲默認值。 但是,我不知道它安裝了什麼。安裝程序包本身在哪裏,還是與安裝程序相同的食譜?

回答

7

這裏有幾件事要談。首先,規範參考文檔位於Chef Docs頁面上的封裝資源。

由於廚師食譜是Ruby DSL,我們來看看它的含義。配方中定義的每個資源都有一個類型,可以有一個或多個提供者。資源是處理如何管理資源(提供者)的底層事物的聲明性接口。廚師根據節點的平臺自動選擇提供者。就包裝而言,廚師爲yum,apt,solaris,macports等提供服務。有關信息,請參閱文檔。

當你在一個配方中聲明一個資源時,它在Ruby中有兩個參數,一個字符串和一個塊。該字符串是資源「名稱」。該塊中的每個屬性參數都可能具有默認選項,這些默認選項在文檔站點上爲各種核心Chef資源和提供者記錄。該名稱也用於其中一個屬性,稱爲「name_attribute」。在這個例子中:

package "apache2" do 
    package_name node['apache']['package'] 
end 

對於所有意圖和目的,資源的名稱是「apache2」。但是,軟件包的名稱屬性爲package_name,在這種情況下,軟件包名稱來自屬性node['apache']['package'],該屬性在食譜的attributes/default.rb文件中設置。這是特定平臺,因爲沒有兩個發行版/操作系統可以同意調用該軟件包(Debian上的apache2,RHEL上的httpd)。

資源的特殊屬性是動作。這告訴底層提供者該資源應該是什麼狀態。廚師將默認採取最積極的資源行動。作爲底層系統資源的聲明性接口,Chef認爲這是最理智的事情。在包裝的情況下,Chef將默認安裝包裝。

所以在寫這種配方的概述:

  1. 我們告訴廚師來管理一個名爲「apache2」包。
  2. 我們告訴大廚,要管理的軟件包名稱實際上來自屬性`node ['apache'] ['package']。
  3. 鑑於沒有具體操作,廚師將默認install包。
  4. 廚師將使用默認設置的節點平臺的底層軟件包管理器來安裝軟件包。在Debian/Ubuntu系統上,它將執行apt-get install apache2。在RHEL/CentOS等系統上,它將執行yum install httpd
+0

很好的回答!這實際上是apache2食譜的一個很好的演練,以及如何編寫具有平臺特定屬性的食譜的很好參考 – TrinitronX 2013-05-29 07:28:58

+0

是的,非常感謝!這對我有很大的幫助和啓發! – Ella 2013-07-19 02:02:52