Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

102 рядки
2.8 KiB

  1. terraform {
  2. required_version = "~> 0.12.21"
  3. required_providers {
  4. azurerm = "~> 1.44"
  5. }
  6. }
  7. locals {
  8. linkrtbs = distinct(flatten([
  9. for link in var.sub_links : [
  10. for rtb in try(link.subnet.rtb, []) : {
  11. subnet = link.subnet.name
  12. route_table_name = link.subnet.rtb.name
  13. }
  14. ]
  15. ]))
  16. }
  17. resource "azurerm_subnet_route_table_association" "azsub_rtb_link" {
  18. depends_on = [var.azsub_link_depends_on]
  19. for_each = {for link in try(local.linkrtbs, []): link.subnet => link}
  20. subnet_id = data.azurerm_subnet.sub[each.value.subnet].id
  21. route_table_id = data.azurerm_route_table.rtb[each.value.route_table_name].id
  22. }
  23. locals {
  24. linknatgws = distinct(flatten([
  25. for link in var.sub_links : [
  26. for rtb in try(link.subnet.natgw, []) : {
  27. subnet = link.subnet.name
  28. nat_gateway_name = link.subnet.natgw.name
  29. }
  30. ]
  31. ]))
  32. }
  33. resource "azurerm_subnet_nat_gateway_association" "azsub_natgw_link" {
  34. depends_on = [var.azsub_link_depends_on]
  35. for_each = {for link in try(local.linknatgws, []): link.subnet => link}
  36. subnet_id = data.azurerm_subnet.sub[each.value.subnet].id
  37. nat_gateway_id = data.azurerm_nat_gateway.natgw[each.value.nat_gateway_name].id
  38. }
  39. locals {
  40. subnets = distinct(flatten([
  41. for link in var.sub_links : {
  42. name = link.subnet.name
  43. virtual_network_name = link.subnet.virtual_network_name
  44. resource_group_name = link.subnet.resource_group_name
  45. }
  46. ]))
  47. }
  48. data "azurerm_subnet" "sub" {
  49. depends_on = [var.azsub_link_depends_on]
  50. for_each = {for subnet in local.subnets: subnet.name => subnet}
  51. name = each.value.name
  52. virtual_network_name = each.value.virtual_network_name
  53. resource_group_name = each.value.resource_group_name
  54. }
  55. locals {
  56. rtbs = distinct(flatten([
  57. for link in var.sub_links : [
  58. for rtb in try(link.subnet.rtb, []) : {
  59. name = link.subnet.rtb.name
  60. resource_group_name = link.subnet.rtb.resource_group_name
  61. }
  62. ]
  63. ]))
  64. }
  65. data "azurerm_route_table" "rtb" {
  66. depends_on = [var.azsub_link_depends_on]
  67. for_each = {for rtb in local.rtbs: rtb.name => rtb}
  68. name = each.value.name
  69. resource_group_name = each.value.resource_group_name
  70. }
  71. locals {
  72. natgws = distinct(flatten([
  73. for link in var.sub_links : [
  74. for rtb in try(link.subnet.natgw, []) : {
  75. name = link.natgw.name
  76. resource_group_name = link.natgw.resource_group_name
  77. }
  78. ]
  79. ]))
  80. }
  81. data "azurerm_nat_gateway" "natgw" {
  82. depends_on = [var.azsub_link_depends_on]
  83. for_each = {for natgw in local.natgws: natgw.name => natgw}
  84. name = each.value.name
  85. resource_group_name = each.value.resource_group_name
  86. }