我一直在閱讀很多文章,討論使用Git部署網站的更新後鉤子,但是我不明白這是如何在EC2上完成的。Git將PHP應用程序部署到多個EC2節點
我想使用EC2的Auto Scaling功能在我的負載均衡器後面自動添加基於我的服務器的AMI的微/小節點。
我怎樣才能使它如此:在啓動
推送更新到所有節點
我的節點自動獲取最新版本從倉庫網站(觸發更新立即如果可能的話) ,甚至是那些動態添加的(因此沒有超出AMI已經包含的配置)。
我一直在閱讀很多文章,討論使用Git部署網站的更新後鉤子,但是我不明白這是如何在EC2上完成的。Git將PHP應用程序部署到多個EC2節點
我想使用EC2的Auto Scaling功能在我的負載均衡器後面自動添加基於我的服務器的AMI的微/小節點。
我怎樣才能使它如此:在啓動
推送更新到所有節點
我的節點自動獲取最新版本從倉庫網站(觸發更新立即如果可能的話) ,甚至是那些動態添加的(因此沒有超出AMI已經包含的配置)。
就自動化工具而言,您可以使用木偶或廚師完成工作。那些提供託管服務,以及背後的公司:
個人,我們使用scalarium來部署我們的服務器,並自動伸縮它們。
如果這不是你想要的,你可以編寫你自己的腳本供大廚在實例上部署。已經有一個deploy resource與git很好地工作。我可能會推薦廚師獨奏,因爲這不需要運行廚師服務器(還有很多依賴和需求管理)或類似littlechef,它允許您運行類似廚師服務器的設置,但沒有運行廚師服務器的burdon。
目的是爲了設置一個亞馬遜用於自動調整的私有AMI。
這AMI會對你的服務(HTTP等),紅寶石和廚師裝(gem install chef
)和其他任何你需要再依次運行腳本,以進一步建立您的實例並部署從GIT的代碼。
如果你走這條路,你當然可以根據AMI的要求設置許多服務,然後你只需要廚師來部署代碼。
下面是一個例子使用一個廚師的食譜從GIT檢查代碼:
git "/var/www/example.org" do
repository "git://github.com/yourname/example.git"
revision "production"
action :sync
end
這從混帳檢查你的分公司生產。
由於默認情況下以超級用戶身份運行,因此您應該在/root/.ssh/id_rsa
中使用您的deploykey。在創建私有AMI之前,您可以這樣做。在部署之前,您還可以獲取從安全位置的關鍵:
directory "/root/.ssh/" do
action :create
end
execute "download my deploy key" do
command "wget https://secure.location/id_rsa -O /root/.ssh/id_rsa"
not_if do File.exists?("/root/.ssh/id_rsa") end
end
(我剛剛輸入了這一點,我還沒有運行 - 但我幾乎可以肯定它應該工作,因爲我們做的非常類似的東西在非EC2主機上。)
如果您不運行廚師服務器或小廚師,我會使用capistrano再次執行廚師獨奏 - 例如,檢查代碼的新版本。 Capistrano會發送命令給實例(通過SSH),爲此我可能會設置一個無密碼帳戶與SSH密鑰等。
讓我知道如果你需要更多的指針!
http://www.puppetlabs.com/ – 2011-04-05 02:30:58