Amazon web services 在地形对象中使用输出值
我有多个输出变量,我想将一个父变量输出,然后将其他输出放入其中。我搜索过它,发现我们可以使用terraform对象来获取它,但无法获得正确的语法。 Output.tfAmazon web services 在地形对象中使用输出值,amazon-web-services,terraform,amazon-vpc,terraform-provider-aws,Amazon Web Services,Terraform,Amazon Vpc,Terraform Provider Aws,我有多个输出变量,我想将一个父变量输出,然后将其他输出放入其中。我搜索过它,发现我们可以使用terraform对象来获取它,但无法获得正确的语法。 Output.tf output "public_subnet" { value = "${module.my_vpc.public_subnets_ids}" } output "vpc_id" { value = "${module.my_vpc.vpc_id}&quo
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 })
}
地形没有类型
。因此,您的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}"
}
}
但问题是子模块无法访问其相应模块的输出。因此,我不确定您希望通过输出实现什么。通常,您会使用变量
将变量从父级传递到子级,然后可以在子模块中从这些变量生成新的输出
更新
根据您之前的问题,这里有main.tf
with
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
的文件。文件中会有类似的内容(变量也可以在单独的文件中):
如果是这样,则可以创建一个名为/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
}
}
你怎么能用地形物体来做呢?@Shifa你好。你能澄清一下“做吗?”做什么吗?嗨,Marcin,我的主管让我在output.tf文件中使用terraform对象,这样如果我想引用输出,我可以使用“${module.vpc.vpc_id}”
“${module.vpc.public\u subnet}”
输出变量的名称保持不变,我们可以访问不同的属性,如vpc\u id
public\u subnet
etcDid你明白我的意思了吗?我做了很多搜索,没有找到任何有用的material@Shifa我在试着拼图。我记得昨天的VPC。我想我知道你的意思。给我几分钟核实一下。
output "vpc" {
value = {
vpc_id = my_vpc.vpc_id
public_subnet = aws_subnet.public.*.id
private_subnet = aws_subnet.private.*.id
}
}