gpt4 book ai didi

amazon-web-services - 在 terraform 对象中使用输出值

转载 作者:行者123 更新时间:2023-12-04 15:20:17 25 4
gpt4 key购买 nike

我有多个输出变量,我想创建一个父输出变量,然后将其他输出放入其中。我已经搜索过它,发现我们可以为它使用 terraform 对象,但无法获得正确的语法。
输出.tf

output "public_subnet" {
value = "${module.my_vpc.public_subnets_ids}"
}
output "vpc_id" {
value = "${module.my_vpc.vpc_id}"
}
output "private_subnet" {
value = "${module.my_vpc.private_subnets_ids}"
}
我希望我的输出在一个对象中,或者您可以说具有所有子输出值的父输出变量,我想出了几行我知道语法不正确但会让您了解我在想什么的图片.
output "vpc" {
value = {
vpc_id = "${module.my_vpc.vpc_id}"
public_subnet = "${module.my_vpc.public_subnets_ids}"
private_subnet = "${module.my_vpc.private_subnets_ids}"
}
type = object({ vpc_id = string, public_subnet = string, private_subnet = string })
}

最佳答案

地形 output没有type .因此,您的 vpc应该:

output "vpc" {
value = {
vpc_id = "${module.my_vpc.vpc_id}"
public_subnet = "${module.my_vpc.public_subnets_ids}"
private_subnet = "${module.my_vpc.private_subnets_ids}"
}
}
但问题是子模块有 无法访问其父级的输出。 因此,我不确定您想通过输出实现什么目标。通常,您会使用 variable 将变量从父级传递给子级。 ,然后您可以从子模块中的这些变量生成新输出。
更新
根据您之前的问题,有 main.tf
module "my_vpc" {
source = "./modules/vpc"
vpc_cidr = var.vpc_cidr
public_subnet = var.public_subnet
private_subnet = var.private_subnet
availability_zone = data.aws_availability_zones.azs.names
}
因此,您必须有一个文件夹 ./modules/vpc .在文件夹中,可能有一个名为 ./modules/vpc/vpc.tf的文件。 .该文件中将包含类似内容(变量也可以在单独的文件中):
variable "vpc_cidr" {}

variable "public_subnet" {}

variable "private_subnet" {}

variable "availability_zone" {}

# the rest of the VPC definition. Since the file is not given,
# i can only speculate on the exact details of the content

resource "aws_subnet" "public" {

count = length(var.public_subnet)

vpc_id = aws_vpc.my_vpc.id

# other attributes
}

resource "aws_subnet" "private" {

count = length(var.private_subnet)

vpc_id = aws_vpc.my_vpc.id

# other attributes
}
如果是这样,那么您可以创建一个名为 ./modules/vpc/output.tf 的新文件。内容:
output "vpc" {
value = {
vpc_id = my_vpc.vpc_id
public_subnet = aws_subnet.public.*.id
private_subnet = aws_subnet.private.*.id
}
}

关于amazon-web-services - 在 terraform 对象中使用输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63461009/

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