Terraform:将变量从一个模块传递到另一个模块
Terraform: Passing variable from one module to another
我正在为创建 AWS VPC 创建 Terraform 模块。
这是我的目录结构
➢ tree -L 3
.
├── main.tf
├── modules
│ ├── subnets
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ └── vpc
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
└── variables.tf
3 directories, 12 files
在子网模块中,我想获取 vpc(子)模块的 vpc id。
在 modules/vpc/outputs.tf
我使用:
output "my_vpc_id" {
value = "${aws_vpc.my_vpc.id}"
}
这对我在 modules/subnets/main.tf
中执行以下操作是否足够?
resource "aws_subnet" "env_vpc_sn" {
...
vpc_id = "${aws_vpc.my_vpc.id}"
}
您的main.tf
(或您使用子网模块的任何地方)需要从 VPC 模块的输出中传递这个,并且您的子网模块需要采用一个必需的变量。
要访问模块的输出,您需要将其引用为 module.<MODULE NAME>.<OUTPUT NAME>
:
In a parent module, outputs of child modules are available in expressions as module... For example, if a child module named web_server declared an output named instance_ip_addr, you could access that value as module.web_server.instance_ip_addr.
所以你的 main.tf
看起来像这样:
module "vpc" {
# ...
}
module "subnets" {
vpc_id = "${module.vpc.my_vpc_id}"
# ...
}
和 subnets/variables.tf
看起来像这样:
variable "vpc_id" {}
我正在为创建 AWS VPC 创建 Terraform 模块。
这是我的目录结构
➢ tree -L 3
.
├── main.tf
├── modules
│ ├── subnets
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ └── vpc
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
└── variables.tf
3 directories, 12 files
在子网模块中,我想获取 vpc(子)模块的 vpc id。
在 modules/vpc/outputs.tf
我使用:
output "my_vpc_id" {
value = "${aws_vpc.my_vpc.id}"
}
这对我在 modules/subnets/main.tf
中执行以下操作是否足够?
resource "aws_subnet" "env_vpc_sn" {
...
vpc_id = "${aws_vpc.my_vpc.id}"
}
您的main.tf
(或您使用子网模块的任何地方)需要从 VPC 模块的输出中传递这个,并且您的子网模块需要采用一个必需的变量。
要访问模块的输出,您需要将其引用为 module.<MODULE NAME>.<OUTPUT NAME>
:
In a parent module, outputs of child modules are available in expressions as module... For example, if a child module named web_server declared an output named instance_ip_addr, you could access that value as module.web_server.instance_ip_addr.
所以你的 main.tf
看起来像这样:
module "vpc" {
# ...
}
module "subnets" {
vpc_id = "${module.vpc.my_vpc_id}"
# ...
}
和 subnets/variables.tf
看起来像这样:
variable "vpc_id" {}