我们已经使用Terraform为项目设置了基础设施,包括代码部署、ALB和自动扩展组。到目前为止,我们一直在进行原地部署。但现在我们正在尝试切换到蓝/绿部署。
由于CodeDeploy的蓝/绿部署会在成功部署后替换整个自动扩展组,因此Terraform状态文件中自动扩展组的旧状态将变得过时,并且不会反映出CodeDeploy服务添加的新自动扩展组。
是否有任何已知的方法来克服这个问题?
您可以使用
lifecycle {
ignore_changes = [autoscaling_groups]
}
aws_codedeploy_deployment_group
中,您还需要将 autoscaling_groups
设置为 []
,因为当 CodeDeploy 部署新的绿色环境时,新创建的自动缩放组将是不同的(由 CodeDeploy 创建)。根据您触发 Code Deploy 部署的方式,您可以在部署脚本中运行 Terraform import 作为后置部署钩子,以更新 Terraform 状态以指向新的自动缩放组。您需要通过其中一个客户端库或 CLI 获取新 ASG 的名称。
terraform import aws_autoscaling_group.some_asg_identifier name-of-your-replacement-asg
terraform apply
来更新启动配置,然后使用Consul来增加(然后减少)ASG的最大大小。 - Iso