0

鉴于这些用例,是否有人对如何处理 AWS 的 Terraform 提供者凭证有任何很酷的想法:

  • 具有独立 AWS 账户的分布式环境 (prod/pre/qa/test/dev)
  • 单个 AWS 账户中所有环境的 S3 后端远程状态
  • 使用 InSpec 测试厨房。

我当前的工作流程需要根据操作更改AWS_ACCESS_KEYand :AWS_SECRET_KEY

  • terraform init- 需要访问 S3 后端远程状态
  • terraform plan/apply- 需要访问特定环境+远程状态
    • 非功能性(一组凭据无法同时访问 env + 远程状态)
  • kitchen converge- 需要访问测试环境+远程状态
    • 非功能性(同上原因)
  • kitchen verify- 需要访问测试环境。

想法

  • backend我希望我可以将 S3 远程状态存储在相应的环境帐户中,但 Terraform配置中似乎不支持变量。
4

1 回答 1

0

您将需要主帐户能够在每个 env 帐户上担任角色以执行更改,而远程主帐户将保留所有状态。这是使用 terraform worspaces 的好方法假设您有两个工作区,prod 和 dev,您可以尝试以下操作:

variable "workspace_roles" {
  default = {
    dev  = "arn:aws:iam::<dev account id>:role/terra_role"
    prod = "arn:aws:iam::<prodaccount id>:role/terra_role"
  }
}

provider "aws" {
 assume_role = var.workspace_roles[terraform.workspace]
}
于 2020-10-20T11:01:26.673 回答