第一次失败后停止 opsworks 部署

第一次失败后停止 opsworks 部署

我终于为我们的一个项目在 AWS Opsworks 中设置完成了功能齐全的环境,但尚未完全投入使用。

对我的一个模板进行一些调整后,我意外地推送了一个 chef 语法错误,在正在运行的实例上更新了我的自定义 cookbook repo,并重新部署了我的应用程序。

部署到一半时,第一个实例显然失败了,而第二个实例仍在继续部署。尝试通过负载平衡器加载网站时,我发现网站已经瘫痪,第二个实例上的部署很快就完成了。

就像我说的,这不在生产中,一旦我们上线,我们也会有一个暂存堆栈,并且希望在现场不会发生这样的事情(即 chef 语法错误),但我仍然很好奇 Opsworks 是否提供了一些可以说的东西:“你在一实例上失败了;现在停止部署到其余实例”。

如果有一种方法可以在部署失败时收到通知,比如发送 SNS 通知或类似的东西,那就太好了。

我很好奇其他人如何处理这种情况:部署失败、停止部署到所有实例、通知、回滚等。或者我可能错过了仪表板上的某些配置。

答案1

不幸的是,OpsWorks 尚不支持滚动部署(如 CodeDeploy 和 Elastic Beanstalk)。因此,当一个实例失败时,很难停止可能正在运行任务的其他实例。

我的建议是克隆您的生产堆栈以制作开发堆栈。在您的食谱存储库中有一个主控和生产 git 分支,您的开发堆栈使用主控,生产使用生产分支。

在开发堆栈上进行所有工作和测试,这样即使您意外部署时出现 Chef 语法错误也没关系。测试完更改并确认它们已准备好上线后,将 master 合并到生产中并在生产堆栈上运行任务。

相关内容