terraform 基础设施在本地运行,在 aws codepipeline 上构建和部署它会出错

terraform infrastructure runs locally , building and deploying it on aws codepipeline gives error

我已经使用 terraform 创建了我的 aws 基础设施。基础设施包括创建 elastic beanstalk 应用程序、应用程序负载均衡器、s3、dynamodb、vpc-subnets 和 vpc-endpoints。

aws 基础设施使用 terraform 命令在本地运行,如下所示:

terraform init
terraform plan -var-file="terraform.tfvars"
terraform apply -auto-approve -var-file="terraform.tfvars"

terraform.tfvars 包含区域、实例类型、访问密钥等变量。

我想使用 aws codepipeline 自动执行此 terraform 基础设施的构建和部署过程。 我怎样才能完成这个任务?要遵循什么步骤?在哪里保存 terraform.tfvars 文件?在特定的 codebuild 角色中指定什么角色。自动批准的手动过程如何?

我的方法 : codecommit/github codebuild codedeploy ie (codepipeline) 的整个过程是通过aws控制台进行的,我从github开始作为源,它正在工作(github 存储库包括我用于构建 aws 基础设施的 terraform 代码)然后对于 codebuild,我需要指定环境变量和 buildspec.yml 文件,这就是问题所在,我在本地有一个 terraform.tfvars 来完成这项工作,但在这里我需要在 buildspec.yml 文件中完成它。

问题:我不知道如何在 buildspec.yml 文件中指定我的 terraform.tfvars 凭据以及要指定哪些环境变量?我也知道我们需要在 codebuild 项目中指定角色,但如何有效地指定它们?如何在 s3 中存储 Terraform 状态?

- 我怎样才能完成这个任务?

使用 CodeCommit 存储您的 Terraform 代码,使用 CodeBuild 存储 Terraform 计划、Terraform 应用等,使用 CodePipeline 将 CodeCommit 与 CodeBuild 连接。

要遵循什么步骤?

网上有很多教程。以此为例: https://medium.com/faun/terraform-deployments-with-aws-codepipeline-342074248843

terraform.tfvars 文件保存在哪里?

理想情况下,您应该为开发环境创建一个 terraform.tfvars,如 terraform.tfvars.dev,为生产环境创建另一个,如 terraform.tfvars.prod。在您的 CodeBuild 环境中,使用环境变量选择文件。

在具体的CodeBuild角色中指定什么角色?

您的 CodeBuild 角色需要具有创建、列出、删除和更新资源的权限。基本上,在一项服务中,它几乎就是一切。

auto-approve的手动过程呢?

通常,你在一个CodeBuild环境中使用terraform plan来显示你的环境有什么变化,手动批准后,你在另一个CodeBuild环境中执行terraform apply -auto-approve。查看上面的教程,它显示了如何创建它。