Bicep IaC: гибкий сервер базы данных Azure для PostgreSQL с частной конечной точкой

Я хочу создать гибкий сервер базы данных Azure для PostgreSQL, который использует частную конечную точку с Bicep.

Для этого на портале я могу выбрать «Публичный доступ (разрешенные IP-адреса)» и «Частная конечная точка» и снять флажок «Разрешить общий доступ к этому ресурсу через Интернет с использованием общедоступного IP-адреса» на вкладке «Сеть».

Но как я могу сделать это в бицепсе? Я не могу установить для publicNetworkAccess значение «Отключено», потому что тогда я получаю сообщение об ошибке, требующее установить значение для делегированногоSubnetResourceId. Итак, я могу создать сервер с параметром publicNetworkAccess, установленным на «Включить», и создать свою частную конечную точку для сервера. Но теперь я не могу изменить publicNetworkAccess на Disable, потому что свойство publicNetworkAccess доступно только для чтения.

https://learn.microsoft.com/en-us/azure/templates/microsoft.dbforpostgresql/flexibleservers?pivots=deployment-language-bicep

  • Развертывание с помощью publicNetworkAccess: «Отключено».

  • Развертывание с помощью publicNetworkAccess: «Включено» и измените значение на «Отключено» после первого развертывания (при котором была развернута частная конечная точка и т. д.).

Вы ищете прямой подход только к бицепсу? @SaibotDev

Jahnavi 12.08.2024 10:33

@Джаннави Да. Моя цель — создать модуль бицепса для этого варианта использования.

SaibotDev 12.08.2024 10:44

Невозможно напрямую отключить публичный адрес и включить его с помощью частной конечной точки. @SaibotDev

Jahnavi 12.08.2024 11:07

Что именно вы имеете в виду под прямым? Это возможно с помощью портала. Что означает, это ошибка в ARM/Bicep или нет? @Джаннави

SaibotDev 12.08.2024 11:18

Прямо означает, что сначала вам нужно создать сервер с включенным публичным адресом, а затем создать частную конечную точку с помощью бицепса. Теперь используйте PowerShell или CLI, чтобы обновить значение до отключенного. @SaibotDev

Jahnavi 12.08.2024 14:00
Как установить 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...
0
5
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Развертывание с помощью publicNetworkAccess: «Отключено». Развертывание с помощью publicNetworkAccess: «Включено» и измените на «Отключено» после первого развертывания (при котором была развернута частная конечная точка и т. д.).

Во-первых, я развернул сервер PostgreSQL с помощью publicNetworkAccess: 'Enabled', как показано ниже.

resource postgresqlServer 'Microsoft.DBforPostgreSQL/flexibleServers@2023-03-01-preview' = {
  name: 'serverlatest'
  location: resourceGroup().location
  sku: {
    name: 'Standard_D4ds_v4'
    tier: 'GeneralPurpose'
  }
  properties: {
    version: '13'
    storage: {
      storageSizeGB: 32
    }
    administratorLogin: 'admin'
    administratorLoginPassword: 'xxxx'
    highAvailability: {
      mode: 'Disabled'
    }
    backup: {
      backupRetentionDays: 10
    }
    network: {
      publicNetworkAccess: 'Enabled'
    }
  }
}

Команда az postgres elastic-server позже будет использоваться для обновления конфигурации сервера с помощью publicNetworkAccess: 'Disabled' после того, как развертывание частной ссылки будет выполнено с помощью bicep.

Обратитесь к документу MS Doc для создания частной конечной точки с использованием бицепса с соответствующими подсетями в виртуальной сети, как показано ниже.

resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
  name: 'myVnet'
  location: resourceGroup().location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
  }
}
resource postgresqlServer 'Microsoft.DBforPostgreSQL/flexibleServers@2023-03-01-preview' existing = {
  name: 'serverlatest'
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
  parent: vnet
  name: 'mySubnet'
  properties: {
    addressPrefix: '10.0.0.0/24'
    privateEndpointNetworkPolicies: 'Disabled'
  }
}
resource privateEndpoint 'Microsoft.Network/privateEndpoints@2023-01-01' = {
  name: 'xxx'
  location: resourceGroup().location
  properties: {
    subnet: {
      id: subnet.id
    }
    privateLinkServiceConnections: [
      {
        name: 'xxx'
        properties: {
          privateLinkServiceId: postgresqlServer.id
          groupIds: [
            'postgresqlServer'
          ]
          requestMessage: 'xxx'
        }
      }
    ]
  }
}

Выход:

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

Похожие вопросы

PowerShell выводит список виртуальных каталогов внутри учетной записи хранения Azure
Развертывание приложения-контейнера Azure из VisualStudio — ошибка 404
Azure Document Intelligence — RequestFailedException: «Ресурс не найден, состояние: 404 (не найдено)»
Как отобразить имя файла вместе со ссылкой в ​​веб-приложении Azure OpenAI
Триггер очереди Azure с настраиваемым именем подключения
Триггер нескольких репозиториев Azure. Почему он срабатывает несколько раз для одной и той же фиксации?
Невозможно воспроизвести приложение на основе холста после его импорта в другую среду/другой клиент (с использованием инструментов сборки Azure DevOps PP)
Azure Pipeline не удается извлечь подмодуль
Подключение к служебной шине из стандартного рабочего процесса приложения логики в сравнении с кодом
Правило оповещения Azure: прыгающее окно (запускать каждые n часов, запрашивать данные за последние n+m часов)