Я довольно новичок в Terraform и у меня есть некоторые проблемы с передачей переменных между модулями / дочерними каталогами.
У меня есть такая структура:
.
|-- main.tf
|-- variables.tf
|-- terraform.tfvars
|-- data.tf
|-- compute
|-- main.tf
|-- variables.tf
|-- terraform.tfvars
|-- network
|-- main.tf
|-- variables.tf
|-- terraform.tfvars
Мой main.tf в корневом каталоге выглядит так:
provider "azurerm" {
}
resource "azurerm_resource_group" "test" {
name = "${var.resourcegroup}"
location = "${var.location}"
tags {
costcenter = "costcenter_nr"
environment = "test"
}
}
resource "azurerm_virtual_network" "test" {
name = "${var.vnet}"
location = "${var.location}"
resource_group_name = "${var.resourcegroup}"
address_space = ["10.102.2.0/23"]
subnet {
name = "${var.subnet_agw}"
address_prefix = "10.102.3.128/28"
}
depends_on = ["azurerm_resource_group.test"]
}
module "compute" {
source = "./compute"
}
module "network" {
source = "./network"
}
В сетевом каталоге я хочу создать сетевые интерфейсы для виртуальных машин. Таким образом, сетевые интерфейсы зависят от идентификатора подсети. Значения виртуальных машин (которые я хочу создать с помощью шаблонов для вычислений) зависят от идентификатора сетевого интерфейса.
В data.tf в корневом каталоге я вывожу идентификатор подсети:
data "azurerm_subnet" "agw" {
name = "${var.subnet_agw}"
virtual_network_name = "${var.vnet}"
resource_group_name = "${var.resourcegroup}"
depends_on = ["azurerm_virtual_network.test"]
}
output "subnet_ag" {
value = "${data.azurerm_subnet.agw.id}"
}
Как мне использовать этот вывод / переменную в network / main.tf, чтобы я мог подготовить сетевой интерфейс?
network / main.tf будет выглядеть так:
resource "azurerm_network_interface" "sql_server" {
name = "${var.sql_server}"
location = "${var.location}"
resource_group_name = "${var.resourcegroup}"
ip_configuration {
name = "${var.sql_server}"
subnet_id = "${????????}"
private_ip_address_allocation = "dynamic"
}
depends_on = ["azurerm_resource_group.test"]
}
Кроме того, будет ли работать эта зависимость, поскольку она создается main.tf?!