Одним з важливих аспектів роботи з Terraform є можливість ефективного управління ресурсами хмарних платформ, таких як Microsoft Azure. Зазвичай під час створення інфраструктури на платформі Azure за допомогою Terraform виникає необхідність посилатися на імена ресурсів, створених раніше в конфігурації.
Одним з таких сценаріїв є ситуація, коли потрібно посилатися на ім’я підмережі, створеної у ресурсі віртуальної мережі (Virtual Network) Terraform, в іншому ресурсі. Наприклад, при створенні нового ресурсу, такого як додатковий веб-захист (Application Gateway), може бути потрібно вказати, до якої саме підмережі він повинен мати доступ.
У розглянутому сценарії ми маємо вже визначені ресурси, такі як ресурсна група (Resource Group), мережева група безпеки (Network Security Group) та віртуальна мережа (Virtual Network), які були створені за допомогою Terraform. Тепер ми хочемо створити новий ресурс – захист веб-додатків, і посилатися на ім’я підмережі, щоб вказати доступну підмережу для цього захисту.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
resource "azurerm_resource_group" "example" { name = "example-resources" location = "West Europe" } resource "azurerm_network_security_group" "example" { name = "example-security-group" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name } resource "azurerm_virtual_network" "example" { name = "example-network" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name address_space = ["10.0.0.0/16"] dns_servers = ["10.0.0.4", "10.0.0.5"] subnet { name = "subnet1" address_prefix = "10.0.1.0/24" } subnet { name = "subnet2" address_prefix = "10.0.2.0/24" security_group = azurerm_network_security_group.example.id } tags = { environment = "Demo" } } Now, I am creating another resource called example and I want to refer name of subnet2 in it. How can I do it? resource "azurerm_application_gateway" "myagw"{ mysubnet = azurerm_virtual_network.example.subnet[1].name // I need to have subnet2 in the place. Is it possible? } |