簡體   English   中英

Vagrant provisioning shell vs puppet vs chef

[英]Vagrant provisioning shell vs puppet vs chef

我有以下設置:

  • 許多不同的項目都是獨立的git存儲庫,但它們大多數都具有相同的服務器配置
  • 每個項目依賴於許多其他項目,我們使用composer依賴管理器將它們組合在一起(這里是PHP語言)。

我想使用Vagrant並在每個存儲庫中包含一個Vagrant文​​件,因此我的團隊成員可以克隆存儲庫,運行vagrant up並准備好去。

我現在的問題是針對供應問題。 我需要安裝幾個工具和包,如apache,git,mysql和幾個php包,然后下載一些文件(如最近的開發數據庫轉儲),在/ var / www中設置所有內容並運行composer install命令。

所以這樣做的一個選擇是使用經理使用廚師或木偶等食譜。 另一種方法是編寫一個bash文件並使用shell配置。

我對廚師/木偶的經驗不多,所以很自然地,使用shell選項似乎更容易,但我想知道從長遠來看這是不是一個好的/可行的選擇。

為什么對我來說,與木偶/廚師合作似乎是一個糟糕的方法:

我知道我將不得不使用幾種不同的配方,並且幾乎總是對我的不同存儲庫使用相同的配方,所以我必須將所有這些配方包含在所有存儲庫中。 考慮有20個repos並需要10個食譜,這意味着我需要添加200個食譜作為git-submodule或類似(同樣每個團隊成員需要克隆存儲庫,然后克隆10個食譜存儲庫,然后每個都運行vagrant項目)。 相比之下,我只需要使用我的shell腳本創建一個小型repo並將其克隆20次。

我可能遺漏了一些東西,所以請建議我是否應該選擇廚師/木偶以及為什么它有意義,即使我的存儲庫都有一個非常相似的服務器設置。

下面的文章涉及另一個CM工具( ansible ),但我認為作者在解釋轉換遠離shell腳本的好處方面表現非常出色。

http://devopsu.com/blog/ansible-vs-shell-scripts/

引用1:

令我感到驚訝的是這些更着名的開發者的回應。 他們基本上說,“這真的很酷,但我可能不會閱讀它,因為我的手動安裝/ shell腳本工作流現在很好。”

我有點震驚,但是一旦我想到它幾分鍾,我意識到他們的選擇是完全理智和理性的,因為他們對CM工具的了解。

引用2:

對於他們來說,使用CM工具意味着需要花費數周時間來學習復雜的概念,努力解決復雜的安裝過程,並隨着時間的推移維護復雜的系統。 他們有點意識到這些好處,但使用CM工具的成本似乎太高而不值得付出努力。

最后總結了shell腳本的好處,我認為它們適用於所有CM工具,木偶,廚師,鹽,ansible ......

  • 哪種方法最有可能最終進入源代碼管理?
  • 哪種方法可以安全地多次安全運行?
  • 哪種方法可以輕松針對多個服務器運行?
  • 哪種方法實際驗證(測試)您的服務器的正確性?
  • 哪種方法可以輕松定位某些服務器(web,db等)?
  • 哪種方法支持輕松模板配置文件?
  • 哪種方法可以輕松支持整個堆棧?

希望這可以幫助。

2016年更新

對於那些通過谷歌發現這一點的人來說,似乎很多開發人員都在向Ansible邁進。 從帖子:

“Ansible是不喜歡部署工具的人的部署工具。它接近腳本,不會污染你的服務器與代理或集中式服務器,只是立即感覺到。”

我們最近在我們的微服務架構中實現了它,它非常棒。

  • 超級簡單
  • 花了一天時間去接
  • 一旦你設定好,就不需要考慮它

木偶/廚師總是在我的心臟/堆棧中占有一席之地,但Ansible更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM