使用 Capistrano 中的 Amazon EC2 工具讓伺服器推送程式碼

使用 Capistrano 中的 Amazon EC2 工具讓伺服器推送程式碼

我正在嘗試使用 EC2 工具來獲取 Capistrano 中 /config/deploy/prod.rb 檔案中某種類型數組中具有特定標記的所有機器。像這樣的事情:

在 prod.rb 檔案中:

//untested command
workers-array[]=$(ec2-describe-instances -F vpc-id=1234 -F tag:Env=prod -F     tag:SystemType=worker)
 for(i=0;i<workers-array.len;i++){
     role :worker-A, workers-array[i]
   }

我不知道我們如何在 Capistrano 中做到這一點,我也是 ruby​​ 新手。夥計們,如果對此有任何幫助,我們將不勝感激。

答案1

我最近遇到了同樣的問題,或者有類似的想法。在處理其他事情時遇到了這個問題。

因此,我想根據配置的伺服器類型運行某些木偶配置。做類似的事情應該相當簡單,但根據情況使用屬性來執行不同的任務。

我進行了設置,以便在 Capistrano 中像往常一樣描述伺服器,例如:

role :web, "mywebhost" #attributes to the server can be added at the end

然後我創建了一個任務來引導所有伺服器以確保它們有木偶。之後,我新增了在引導任務之後運行的命令以及在哪個角色上執行的命令。這些條件可以利用屬性。

after "bootstrap", :roles=>[:web] do 
   # here we place code specific for configuring the web role using puppet
   try_sudo("puppet apply config/puppet/web.pp")
end

您可以查看以下連結來獲取基於屬性運行任務的靈感:用 capistrano 拉木偶

此範例適用於 puppet,但您可以忽略 puppet 並建立您想要的 capistrano 結構。

我在 github 上設置了一個測試存儲庫來描述這一點。我仍然需要添加自述文件,但您應該在這裡找到您需要的內容:帽子驅動的木偶

相關內容