标签: terraform-enterprise

Terraform Cloud / Enterprise - 如何使用 AWS 承担角色

我想将 AWS Assume Roles 与 Terraform Cloud / Enterprise 一起使用

在 Terraform 开源中,您通常只需执行假设角色,利用 CLI 上的 .aws/Credential Profile(这是初始身份验证)并执行假设角色:

provider "aws" {
  assume_role {
    role_arn     = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
    session_name = "SESSION_NAME"
    external_id  = "EXTERNAL_ID"
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,使用 Terraform Enterprise 或 Cloud,您无法引用配置文件,因为不可变基础架构的目录中不会包含该文件。

Terraform Cloud/Enterprise 需要将访问密钥 ID 和秘密访问密钥设置为变量,以便其基础设施可以通过其管道执行 Terraform RUN,并对您想要在其中配置的任何 AWS 账户进行身份验证。

所以问题是:如何利用 AWS 账户的访问密钥 ID 和秘密访问密钥以及“Action”:“sts:AssumeRole”策略来执行 AWS 承担角色?

我认为,下面的方法可行,但是 Terraform 正在通过 AWS Credential Profile 凭证对具有 sts:AssumeRole 策略的帐户进行初始身份验证

当尝试承担角色时,Terraform 是否可以查看 access_key 和 Secret_key 来确定要使用的 AWS 账户,而不是使用 AWS 凭证配置文件?

provider "aws" {
  region                  = var.aws_region …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform-enterprise assume-role terraform-cloud

9
推荐指数
1
解决办法
4398
查看次数

Terraform 输出被标记为敏感

我们为不同的领域创建了一些 terraform 堆栈,例如用于 vpc 的网络堆栈、用于 rds 内容的 rds 堆栈等。

\n

例如,rds 堆栈依赖于网络堆栈从输出中获取值:

\n

网络堆栈的输出:

\n
output "public_subnets" {\n  value = aws_subnet.public.*.id\n}\n\noutput "private_subnets" {\n  value = aws_subnet.private.*.id\n}\n\noutput "data_subnets" {\n  value = aws_subnet.data.*.id\n}\n\n... an so on\n
Run Code Online (Sandbox Code Playgroud)\n

rds 堆栈将点击输出

\n
data "tfe_outputs" "networking" {\n  organization = "my-tf-cloud-org"\n  workspace    = "network-production-eucentral1"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我尝试使用输出时:

\n
\xe2\x94\x82\n\xe2\x94\x82   on main.tf line 20, in module "db":\n\xe2\x94\x82   20:   base_domain = data.tfe_outputs.dns.values.fqdn\n\xe2\x94\x82     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82     \xe2\x94\x82 data.tfe_outputs.dns.values has a sensitive value\n\xe2\x94\x82\n\xe2\x94\x82 This object does not have an attribute named "fqdn".\n\xe2\x95\xb5\n\xe2\x95\xb7\n\xe2\x94\x82 Error: …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-enterprise terraform-cloud

3
推荐指数
1
解决办法
1877
查看次数