2017-08-16 61 views
1

我正在爲運行Web應用程序的EC2服務器設置修補程序進程。在狀態檢查失敗時回滾的EC2上運行更新

我需要構建一個自動化進程來安裝系統更新,但如果Web應用程序未通過狀態檢查,則還原爲最後一個工作的ec2實例。

我一直在努力做到這一點使用EC2系統管理的自動化文件執行以下步驟:

  1. 停止EC2實例從新
  2. 從實例創建AMI
  3. 啓動新實例創建AMI
  4. 運行更新
  5. 上的Web應用程序
  6. 運行狀態檢查
  7. 如果檢查失敗,停止ñ新實例並重新啓動原始實例

自動化文檔成功運行前5個步驟,但我無法確定如何觸發步驟6?我可以在自動化文檔中執行此操作嗎?我能從第5步調用什麼輸出?如果它使用aws:runCommand,runCommand是否應該觸發一個新的自動化文檔或另一個AWS工具?

回答

0

我嘗試了以下解決這個問題,這或多或少的工作:

  • 包括一個AWS:自動化文檔
  • 在RunCommand操作這跑DocumentName「AWS-RunShellScript」與參數如下:

    sudo aws s3 cp s3://path/to/s3/script.sh /tmp/script.sh 
    

從S3下載腳本

設置文件到可執行:

chmod +x /tmp/script.sh 

執行使用變量的腳本設置,或由自動化文檔

bash /tmp/script.sh -o {{VAR1}} -n {{VAR2}} -i {{VAR3}} -l {{VAR4}} -w {{VAR5}} 

該腳本包括下列getopts的命令用來設置輸入變量產生的:

while getopts o:n:i:l:w: option 
do 
case "${option}" 
in 
n) VAR1=${OPTARG};; 

o) VAR2=${OPTARG};; 

i) VAR3=${OPTARG};; 

l) VAR4=${OPTARG};; 

w) VAR5=${OPTARG};; 

esac 

done 

bash腳本使用變量來運行狀態檢查,並回滾到最後的w如果失敗,則爲orking實例。

相關問題