Создание правила azurerm_postgresql_flexible_server_firewall_rule с помощью for_each

Пытаюсь в течение 2 дней создать правило брандмауэра, но не могу найти ошибку.

Я ухожу шаг за шагом и теперь использую пример от hashicorp, который тоже не работает.

resource "azurerm_postgresql_flexible_server_firewall_rule" "vpn" {
  for_each = tomap({
    a = "112.234.12.1"
    b = "212.22.111.1",
    c = "22.111.22.1"
  })

  name             = "db-firewall-${each.key}"
  server_id        = azurerm_postgresql_flexible_server.mydb.id
  start_ip_address = each.value
  end_ip_address   = each.value
}

Этот код не создает правила брандмауэра. Что у меня плохого?

Есть ли ошибки при выполнении кода? Не могли бы вы опубликовать вывод команды terraform plan?

Rui Jarimba 07.06.2024 17:16

Успешен ли terraform apply для этого ресурса? Есть ли у вас вывод журнала azurerm_postgresql_flexible_server_firewall_rule.vpn для команды apply?

Matthew Schuchard 07.06.2024 17:36

Если «azurerm_postgresql_flexible_server_firewall_rule», которым вы поделились, является тем, которое вы используете в своей конфигурации, то согласно ссылке эта проблема возникла из-за лишней запятой в вашей функции «tomap», поскольку это была карта, а не набор строк @user6266369

Vinay B 07.06.2024 20:52
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
3
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создание правила azurerm_postgresql_flexible_server_firewall_rule с помощью for_each

Что касается функции «tomap », здесь метааргумент « for_each» был передан как map, а не как set of strings, поэтому нам нужно удалить лишнюю запятую во второй строке «tomap».

Я попробовал конфигурацию terraform со ссылкой на реестр hashicorp с упомянутыми изменениями и смог успешно выполнить требование.

Моя конфигурация терраформа:

resource "azurerm_postgresql_flexible_server" "mydb" {
  name                = "testvk-postgres-ser"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  version             = "12"
  administrator_login = "adminuser"
  administrator_password = "Password1234!"
  sku_name            = "GP_Standard_D4s_v3"
  storage_mb = 32768
  

  high_availability {
    mode = "SameZone"
  }
}

resource "azurerm_postgresql_flexible_server_firewall_rule" "vpn" {
  for_each = tomap({
    a = "112.234.12.1"
    b = "212.22.111.1"
    c = "22.111.22.1"
  })

  name             = "vkdb-firewall-${each.key}"
  server_id        = azurerm_postgresql_flexible_server.mydb.id
  start_ip_address = each.value
  end_ip_address   = each.value
}

Развертывание выполнено успешно:

Другие вопросы по теме