Terraform terraform_remote_state 部分配置

2023-12-07

我的团队严重依赖 Terraform 中的 S3 远程状态。我们使用-backend-configCLI 的功能是在初始化项目时指定 S3 配置,因此我们实际的 terraform 代码如下所示:

terraform {
  backend "s3" {}
}

只要在 CLI 上指定所有 S3 属性,上述方法就可以很好地工作-backend-config.

我们希望在配置中的其他地方使用类似的策略来引用这些状态。由于后端的参数是动态的并且在 CLI 上指定,因此我们希望做同样的事情。

data "terraform_remote_state" "dns" {
  backend = "s3"
  config {
    key = "configurations/production/dns/terraform.tfstate"
  }
}

在上面的例子中,我们省略了必需的region and bucket参数,这当然会导致计划/应用失败(not a valid region:).

是否有一种方法可以让我们从 CLI 指定远程状态引用的区域和存储桶,而不是对它们进行硬编码?


The backendblock 相当特殊,因为它在 Terraform 工作流程中很早就被处理,因此它无法访问正常的 Terraform 功能,例如变量。这就是为什么它有自己特殊的配置机制。

The terraform_remote_state另一方面,数据源只是常规数据源,因此可以使用任何常规插值策略。例如,要从 CLI 传递设置,您可以使用变量:

variable "dns_state_region" {
}

variable "dns_state_key" {
}

data "terraform_remote_state" "dns" {
  backend = "s3"
  config {
    region = "${var.dns_state_region}"
    key    = "${var.dns_state_key}"
  }
}

然后您可以将这些传递给terraform plan命令:

$ terraform plan \
    -var="dns_state_region=us-west-1" \
    -var="dns_state_key=configurations/production/dns/terraform.tfstate"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Terraform terraform_remote_state 部分配置 的相关文章

随机推荐