在AWS CodeDeploy中使用蓝/绿部署时,我们如何维护自动缩放组的状态?

时间:2018-03-09 15:30:22

标签: amazon-web-services terraform autoscaling aws-code-deploy blue-green-deployment

我们使用Terraform为项目设置了基础架构,包括代码部署,ALB和自动扩展组。到目前为止,我们正在进行就地部署。但现在我们正试图切换到Blue / Green部署。 由于CodeDeploy Blue / Green部署会在成功部署时替换整个自动缩放组,因此Terraform状态文件中旧的Autoscaling组状态将变得陈旧,并且不会反映由CodeDeploy服务添加的新Autoscaling组。 有没有任何已知的方法来克服这个问题?

2 个答案:

答案 0 :(得分:0)

根据触发代码部署部署的方式,可以在部署脚本中运行Terraform import作为部署后挂钩,以更新Terraform状态以指向新的自动缩放组。您可能需要通过许多客户端库之一或CLI

来获取新ASG的名称。
terraform import aws_autoscaling_group.some_asg_identifier name-of-your-replacement-asg

答案 1 :(得分:0)

你可以使用

lifecycle {
  ignore_changes = [autoscaling_groups]
}

aws_codedeploy_deployment_group 中。

您还必须将 autoscaling_groups 中的 [] 设置为 aws_codedeploy_deployment_group,因为当 CodeDeploy 部署新的绿色时,新创建的自动缩放组将是不同的(由 CodeDeploy 创建)环境。

因此,上述代码将忽略自动缩放组删除/创建时发生的更改。这是因为一旦实施蓝绿部署,CodeDeploy 就会控制自动缩放组的创建。