2011-06-19 45 views
17

我想問一下你什麼時候和什麼情況下使用木偶,以及什麼時候使用廚師。我還發現rump這是一種傀儡獨奏類型的事物,您可以將單臺服務器迭代到其配置中,然後將其推送到一系列服務器,以便您直接查看更改。廚師和木偶推薦

我的問題:這上面我應該用在哪些方面?有人能幫助我嗎?

我的目標是在持續集成,持續部署的單聲道/ .NET環境耙和Git的上下文。我想輕鬆打包,版本和部署Web應用程序,並希望將recepies用於多個Web服務器的負載平衡器。能夠快速降低這些數據,並且在升級之間不會出現任何停機。

回答

15

我會使用Puppet,但我有點偏見,因爲我寫了一本關於它的書,並在那裏工作。 :)除了Rump,您還可以在其應用模式下使用Puppet - 這與廚師獨奏相同。雖然Rump包裝了一些值得嘗試的過程。

我給木偶這裏拍攝使用臀部周圍的包裹物 - 你既可以用木偶DSL或Ruby DSL(廚師只有一個Ruby DSL)。使用Puppet創建「環境」並將git/CI工作流程與您的部署集成非常容易。它也很容易與Rake任務或諸如此類集成。

+0

太棒了。我幾天前買了你的書。我應該在哪裏尋找關於如何將我的代碼設置爲傀儡可以與例如傀儡一起處理的包的指導。 Web服務器還是作爲獨立服務(例如使用TopShelf)? – Henrik

+0

這本書寫的就像我坐在一個企業的基礎設施,DNS服務器等已經成立......我如何從頭開始在WIN/Ubuntu的?假設我想配置一個Win2008服務器並擁有一個git存儲庫? – Henrik

5

如果你對Ruby很熟悉,我建議你嘗試一下Chef比Puppet。使用紅寶石大廚&,您可以運行非常複雜的任務。然而,傀儡比廚師更清晰。好還是不好,都取決於你的實際工作。

+0

你是什麼意思?爲什麼傀儡更多的域被定義? – Henrik

+0

我的意思是傀儡比較嚴格的格式定義了比廚師更乾淨的模型。這一點可以使資源(廚師電話資源作爲食譜)容易被讀/寫。 – Huan

+0

我同意。廚師食譜可能會更復雜,然後木偶清單) – merqlove

27

既然使用了兩者,我會說它取決於你所尋找的。在我看來:

  • 廚師開發商取向。如果你是一位Ruby大師,你會愛上它。

  • Puppet is more sysadmin-oriented。它有一個非ru​​by的DSL,所以將錯誤傳播到你的機器(imho)更加困難。

木偶創建更具可讀性和穩定的代碼,但它也慢部署新功能。這可能是您在一個堅信您的DevOps工作的大企業架構中需要的。

隨着廚師可以實現複雜的任務,用更少的代碼,時間精力。你可以使用所有的紅寶石魔法,而無需創建一個Puppet構造。例如,當您的公司並不真正相信DevOps的價值,並且您不斷努力爭取時間來證明您的經理錯誤時,這很好:-)我個人發現Puppet在開發新功能時執行起來要慢一些可能會有點痛苦。

我的建議是:如果你有一定的開發技能的系統管理員,去木偶。如果你對Ruby(或Python)很好,那就去廚師吧。

我也試過臀部,我用它玩。它有幫助,它很酷,但我仍然沒有看到一個巨大的價值,除了懶惰打字臀部去而不是puppet apply -vd --modulepath =。 module/manifests/init.pp。 :)

+1

我發現puppet apply + capistrano最適合本地設置或在您是單個部署者的項目中。否則,安全性告訴我們使用puppet master或Hosted Chef或Chef Solo或其他人:)用Ruby編寫的很多puppet模塊,我也喜歡語法,它很容易配置,Chef更加困難。但有時廚師可以對任何使用木偶的服務器做任何事情:) – merqlove

+0

由於某種原因,我通過將'-e'開關加入我的班級,我有更好的運氣。 'sudo puppet apply --modulepath〜/ git/puppet_modules -e'include my-class'' – MarkHu

9

最後,我結束了木偶+ vagrant這讓我運行/重新運行/測試木偶表現:然後

gem install puppet 
gem install vagrant 

首先安裝VirtualBox,然後

vagrant box add base http://files.vagrantup.com/lucid32.box 
vagrant init 

然後編輯./Vagrantfile說:

Vagrant::Config.run do |config| 

    config.vm.box = "base" 
    config.vm.provision :puppet do |puppet| 
    puppet.manifests_path = "manifests" 
    puppet.module_path = "modules" 
    end 

    # rest here 
end 

然後節點定義添加到manifests/default.pp,如:

group { "puppet": 
    ensure => "present", 
} 
file { '/etc/motd': 
    content => "Welcome to your Vagrant-built virtual machine!\n" 
} 

然後運行:

vagrant up 

現在你已經有了一個傀儡管理虛擬機,你可以玩,任何清單你改變進入源代碼管理。你可以快速迭代而不必訴諸於臀部。

5

Puppet和Chef之間還有一個很大的區別就是Puppet會在服務器上完成所有的清單編譯,而Chef(和cfengine)會在客戶端上完成部分或全部工作。

這是什麼意思是 *您的客戶端上運行木偶的CPU佔用空間較少, *插件使用Puppet編寫的模塊只能在服務器上運行。

第二部分很重要,因爲它使Puppet與其他架構相結合變得更容易。例如,如果您想通過另一個應用程序的API來獲取數據,那麼在Puppet下,您只需要在Puppetmaster上安裝必要的API模塊,並且只需要授予該服務器對API的訪問權限即可。任何必要的證件也都留在傀儡大師身上 - 更加安全。

我們整合了Puppet和SecretServer(使用puppet自動旋轉根密碼並將它們存儲到SecretServer中)。根據我的理解模型,這在廚師之下是不可能的或安全的。