gpt4 book ai didi

terraform - 基于另一个变量的引用变量

转载 作者:行者123 更新时间:2023-12-05 07:31:52 25 4
gpt4 key购买 nike

file1.tf(由 kops 生成)中,我有这样的资源:

resource "aws_vpc" "my-vpc-tf-id" {
...
}

资源 ID 由 kops 动态生成并添加到 terraform.tfvars(因此它可以在 .tf 文件的其他地方使用):

my_var = "my-vpc-tf-id"

现在我想引用 file2.tf 中的 VPC 资源而不对其名称进行硬编码:

resource "aws_security_group" "db" {
...
vpc_id = "${aws_vpc.${var.my_var}.id}"
...
}

但是 Terraform 提示 ${var.my_var} 是不允许的。所以我在 file2.tf 中定义了它:

resource "aws_security_group" "db" {
...
vpc_id = "${aws_vpc.{{MY_VAR_VAL}}.id}"
...
}

并且我使用 sed 将占位符替换为值。这很好用,但使某些其他任务复杂化,所以我想知道是否有其他方法可以在不使用 sed 或对 my_var 值(只是 Terraform 的 HCL)进行硬编码的情况下实现此目的。

最佳答案

通常的做法是使用 data sources查找您要引用的内容。

VPC data source允许您根据许多不同的事物进行过滤,但典型的过滤是使用 Name 标签:

data "aws_vpc" "selected" {
tags {
Name = "${var.vpc}"
}
}

然后您可以通过以下方式引用此 VPC:

resource "aws_security_group" "db" {
...
vpc_id = "${data.aws_vpc.selected.id}"
...
}

关于terraform - 基于另一个变量的引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51599682/

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