gpt4 book ai didi

Terraform terraform_remote_state 部分配置

转载 作者:行者123 更新时间:2023-12-04 16:30:39 25 4
gpt4 key购买 nike

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

terraform {
backend "s3" {}
}

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

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

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

在上面的例子中,我们省略了必需的 regionbucket 参数,这当然会导致 plan/apply 失败(其中 not a valid地区:)。

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

最佳答案

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

另一方面,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"

关于Terraform terraform_remote_state 部分配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com