В модуле вы должны передавать subnetID или группу ресурсов, или все, что вы создаете, как переменную.Например, в вашей основной конфигурации вы можете вызвать следующее:
module "vnet" {
source = "Azure/network/azurerm"
resource_group_name = "${var.resource_group}"
vnet_name = "${terraform.workspace}-vnet"
location = "${var.arm_region}"
address_space = "${var.arm_network_address_space}"
subnet_prefixes = ["${var.arm_subnet1_address_space}", "${var.arm_subnet2_address_space}"]
subnet_names = ["subnet1", "subnet2"]
tags = {
environment = "${terraform.workspace}"
}
}
Затем вызовите модуль vmdeploy, который использует subnetID, следующим образом:
module "vmdeploy" {
source = "./vmdeploy"
subnetID = "${module.vnet.vnet_subnets[0]}"
}
С помощью ссылки на другой модуль в качестве значениядля модуля vmdeploy вы создаете неявную зависимость, которую Terraform будет распознавать и включать в граф ресурсов.
В самом модуле вы определяете переменную с именем subnetID, например:
var "subnetID" {}
Это помогает?