Конечно можно. И больше ничего не нужно делать. Просто сделай это как обычно. Вот пример:
main.tf
├── rg
│ ├── output.tf
│ └── rg.tf
└── vnet
├── output.tf
└── vnet.tf
Вы создаете модули rg
и vnet
, как это происходит. Установите выход, который вам нужен. Здесь я установил вывод rg_name
и rg_location
. И я также устанавливаю переменные rg_name
и rg_location
в модуле vnet
по мере необходимости. Тогда main.rf показывает здесь:
provider "azurerm" {
features {}
}
module "rg" {
source = "./rg"
rg_name = "charlesTerraform"
}
module "vnet" {
source = "./vnet"
rg_name = module.rg.rg_name
rg_location = module.rg.rg_location
}
output "vnet" {
value = module.vnet.vnet
}
Видите ли, я использую выход модуля rg
в качестве входа для модуля vnet
. Надеюсь, это поможет вам понять модули Terraform.
Обновление:
То же самое относится и к структуре, о которой вы говорили. Вам просто нужно ввести нужный вывод в модуль. Например:
resource "azurerm_resource_group" "example" {
name = "xxxxxx"
location = "xxxx"
}
module "vnet" {
source = "./modules"
resource_group = azurerm_resource_group.example.name
}
Это всего лишь пример, но он показывает, как этого добиться. Надеюсь, вы понимаете.