Terraform - Elastic Beanstalk - 如何交换环境URL

时间:2018-05-23 00:09:09

标签: elastic-beanstalk terraform terraform-provider-aws

我试图用terraform / elastic beanstalk完成蓝/绿部署。如何使用此堆栈交换环境URL?我在这里看不到任何明显的东西。

我能想到的最好的是......

  • 运行terraform适用于启动我的整个架构
    • 旋转aws_elastic_beanstalk_environment的蓝色环境
  • 当想要部署新版本的应用时,运行terraform apply module.elasticbeanstalk.aws_elastic_beanstalk_environment.green以仅启动其他aws_elastic_beanstalk_environment资源
  • 现在我有蓝色和蓝色绿色起来。实际交换URL的时间......
    • 通过命令行eb swap API,交换两个环境URL
    • 手动更新tfstate
    • terraform push新州

如果有一个解决方案我不必手动操纵状态,我会很高兴。或者这是使用这两个工具完成此功能的唯一方法吗?

2 个答案:

答案 0 :(得分:0)

我相信您只需切换每个cname prefix

答案 1 :(得分:-1)

如果您想在交换后更新状态,可以记下beanstalk环境的ID并执行:

# Remove the old state information, using the command line not manually
terraform state rm module.elasticbeanstalk.aws_elastic_beanstalk_environment.blue
terraform state rm module.elasticbeanstalk.aws_elastic_beanstalk_environment.green

# Import these to the opposite environment resources
terraform import module.elasticbeanstalk.aws_elastic_beanstalk_environment.blue <green id>
terraform import module.elasticbeanstalk.aws_elastic_beanstalk_environment.green <blue id>

这看起来并不完美,但它确实避免了需要手动操作状态文件,并且可以轻松编写脚本。