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
。查看上面的教程,它显示了如何创建它。
我已经使用 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
。查看上面的教程,它显示了如何创建它。