第一次失败后停止opsworks部署

我终于在AWS Opsworks中为我们的一个项目完成了一个function齐全的环境,但还没有完全实现它。

在对我的一个模板做了一些调整之后,我不小心推了一个厨师的语法错误,在正在运行的实例上更新了我的自定义食谱库repo,并重新部署了我的应用程序。

一中途部署明显失败,二次部署仍在继续。 试图通过负载均衡器加载站点我可以看到该站点已经closures,并且在二次部署之后不久就完成了。

就像我说的那样,这不是在生产,一旦我们上线,我们也将有一个阶段堆栈,希望这样的事情不应该发生在现场(即厨师的语法错误),但我仍然很好奇Opsworks是否提供了你的东西可以说:“你已经失败了一个实例,现在停止部署到其他实例”。

如果在部署失败时收到通知,比如发送SNS通知或类似的东西,这也会很不错。

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

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

我的build议是克隆你的生产堆栈,以build立一个开发堆栈。 在你的配方库中有一个master和一个生产git分支,你的开发堆栈使用master和production使用生产分支。

在开发堆栈上进行所有的工作和testing,如果意外地使用Chef语法错误进行部署,则无关紧要。 一旦你testing了你的改变,并且你已经准备好投入使用,那么你就可以将主合并到生产环境中,并在生产堆栈上运行这个任务。