如何在Terraform不同模块间引用输出值?以GCP网络、服务器模块为例
Terraform跨模块调用输出值操作步骤
- 第一步:修正network模块的输出配置
你当前modules/network/output.tf存在语法错误,资源引用需要指定对应的资源标识,修改为以下内容:
output "subnet_id" { value = google_compute_subnetwork.default.id }
- 第二步:给server模块声明接收子网ID的输入变量
在modules/server/variable.tf中新增变量定义:
variable "subnet_id" { type = string description = "从network模块传递过来的子网ID" }
- 第三步:在根目录的
node.tf中完成模块实例化和参数传递
根配置文件中需要同时实例化两个模块,将network模块的输出作为参数传入server模块:
# 实例化network模块 module "network" { source = "./modules/network" vpc_name = "你自定义的VPC名称" # 其他network模块所需的入参按需补充 } # 实例化server模块 module "server" { source = "./modules/server" subnet_id = module.network.subnet_id # 其他server模块所需的入参按需补充 }
- 第四步:填充server模块main.tf中的subnetwork字段
直接引用刚才声明的输入变量即可:
resource "google_compute_address" "internal_ip" { name = "my-internal-address" project = "fivenodeautomation" subnetwork = var.subnet_id address_type = "INTERNAL" address = "10.0.1.0" region = "us-central1" purpose = "GCE_ENDPOINT" }
内容的提问来源于stack exchange,提问作者user16821057
相关产品推荐
相关产品推荐

