2011-12-12 74 views
1

我有一個自定義構建和部署腳本,它工作在SSH和部署到服務器(運行MacOS的)一個bash腳本。 bash腳本執行許多簡單的事情,如複製文件,備份舊文件以及爲正向移動的數據庫應用正確的SQL腳本。但是有一些高級的東西,例如啓動遠程SQL升級過程,可以從中斷開連接,並且一旦部署腳本再次啓動,它只會在SQL腳本完全應用時纔會前進(總之有一些流控制發生,bash是不甚理想的這樣的東西)使用傀儡(或者任何東西),而不是一個基於SSH部署

劇本已經是巨大的,是一個爛攤子,因爲慶典並不意味着對這類詳細邏輯的。你能推薦一些工具,庫,這會讓事情變得更容易。

回答

3

對於你能告訴我們什麼,我想你需要一個部署工具,而不是一個配置管理工具。 爲了簡化,我將區分兩個這樣的:

  • 一個部署工具是一個「推」的工具:當您按下按鈕時,所需要的操作的運行作出部署。這是一個一步的過程(它可以有多個動作,但它只啓動一次)。
  • A 配置管理工具通常是一個「拉」工具,您的服務器定期檢查它們的配置是否與CM服務器告訴它們完全相同,並在需要時應用更改。您只需配置一次您的服務器,然後系統確保所有服務都應該如此。它也是輕鬆克隆系統的好工具。

對於部署工具,我個人知道Fabric,這是一個很棒的Python工具。但是Ruby世界中也有Capistrano。我不知道其他人。

對於CM工具,木偶和廚師似乎是人們的首選時下。 Cfengine是一個較老的工具,它有一些問題(我不知道這是否改變了)。

+0

表示同意,這絕對是黑客自定義bash腳本的一個步驟。對於複雜的部署場景,Bash確實不是一個好工具。 – geoaxis

1

這裏是我的建議:

  • 木偶
  • 廚師
  • 的cfengine

這些都是免費的(如啤酒),讓你做你想要什麼。他們將要求您將當前的bash腳本調整爲適合其設計/框架的模塊。這是一個工作,但從長遠來看,它往往會更好,因爲框架負責錯誤檢查,融合配置以及許多其他必須手動插入到自己的代碼中的內容,這些工作是您自己完成的。

我也用Opsware公司之前爲這樣的事情,但是,成本的現金就有了不少,因爲你正在試圖做什麼,不提供顯著更多的好處。

0

在一些情況下從一個bash腳本移動到完整的解決方案是不一樣多的cloudservices權利要求那樣簡單。

隨着「不要嘗試新的東西,當你在最後期限」記:

也有可能是一個很好的時機來重構你的bashscripts。

我已經做了自動化,在過去的重複部署使用的PaaS或只使用GIT/SVN掛鉤使用deployogi(這是bash)的:https://github.com/coderofsalvation/deployogi

我理解你的處境,但是我不能確定其是否公平說bash語言意味着'混亂'和'複雜'。 每種語言都允許隱藏複雜性否?

我猜碼(在任何語言)變得過於複雜時,時間不允許我們重構:)

PaaS的是巨大的。但總是需要?我想不是。