2011-04-05 84 views
8

我一直在閱讀很多文章,討論使用Git部署網站的更新後鉤子,但是我不明白這是如何在EC2上完成的。Git將PHP應用程序部署到多個EC2節點

我想使用EC2的Auto Scaling功能在我的負載均衡器後面自動添加基於我的服務器的AMI的微/小節點。

我怎樣才能使它如此:在啓動

  • 推送更新到所有節點

    1. 我的節點自動獲取最新版本從倉庫網站(觸發更新立即如果可能的話) ,甚至是那些動態添加的(因此沒有超出AMI已經包含的配置)。

  • +0

    http://www.puppetlabs.com/ – 2011-04-05 02:30:58

    回答

    6

    就自動化工具而言,您可以使用木偶或廚師完成工作。那些提供託管服務,以及背後的公司:

    個人,我們使用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密鑰等。

    讓我知道如果你需要更多的指針!

    相關問題