第一次失敗後停止 opsworks 部署

第一次失敗後停止 opsworks 部署

我終於在 AWS Opsworks 中為我們的一個專案設定了一個功能齊全的環境,但尚未完全投入使用。

對我的一個模板進行一些調整後,我不小心推送了廚師語法錯誤,更新了正在運行的實例上的自定義食譜存儲庫並重新部署了我的應用程式。

在部署中途,第一個實例顯然失敗了,第二個實例仍然繼續進行部署。嘗試透過負載平衡器載入網站時,我可以看到該網站已關閉,而第二個實例上的部署很快就完成了。

就像我說的,這不是在生產環境中,一旦我們上線,我們也會有一個臨時堆棧,希望現場不會發生這樣的事情(即廚師語法錯誤),但我仍然很好奇Opsworks 是否提供了一些東西,你可以在其中使用可以說:「您在一個實例上失敗了;現在停止部署到其餘實例」。

如果有一種方法可以在部署失敗時收到通知(例如發送 SNS 通知或類似的內容),那就太好了。

我很好奇其他人如何處理這樣的情況:部署失敗、停止部署到所有實例、通知、回滾等。

答案1

不幸的是,OpsWorks 尚不支援滾動部署(如 CodeDeploy 和 Elastic Beanstalk)。因此,很難停止其他實例,當一個實例失敗時,這些實例可能正在運行任務的一半。

我的建議是克隆您的生產堆疊來製作開發堆疊。在你的食譜儲存庫中有一個主控和一個生產 git 分支,你的開發堆疊使用主控,生產使用生產分支。

在開發堆疊上完成所有工作和測試,即使意外部署時出現 Chef 語法錯誤也沒關係。一旦您測試了您的更改並且您對它們已準備好上線感到滿意,請將主版本合併到生產中並在您的生產堆疊上運行任務。

相關內容