Я хочу создать гибкий сервер базы данных Azure для PostgreSQL, который использует частную конечную точку с Bicep.
Для этого на портале я могу выбрать «Публичный доступ (разрешенные IP-адреса)» и «Частная конечная точка» и снять флажок «Разрешить общий доступ к этому ресурсу через Интернет с использованием общедоступного IP-адреса» на вкладке «Сеть».
Но как я могу сделать это в бицепсе? Я не могу установить для publicNetworkAccess значение «Отключено», потому что тогда я получаю сообщение об ошибке, требующее установить значение для делегированногоSubnetResourceId. Итак, я могу создать сервер с параметром publicNetworkAccess, установленным на «Включить», и создать свою частную конечную точку для сервера. Но теперь я не могу изменить publicNetworkAccess на Disable, потому что свойство publicNetworkAccess доступно только для чтения.
Развертывание с помощью publicNetworkAccess: «Отключено».
Развертывание с помощью publicNetworkAccess: «Включено» и измените значение на «Отключено» после первого развертывания (при котором была развернута частная конечная точка и т. д.).
@Джаннави Да. Моя цель — создать модуль бицепса для этого варианта использования.
Невозможно напрямую отключить публичный адрес и включить его с помощью частной конечной точки. @SaibotDev
Что именно вы имеете в виду под прямым? Это возможно с помощью портала. Что означает, это ошибка в ARM/Bicep или нет? @Джаннави
Прямо означает, что сначала вам нужно создать сервер с включенным публичным адресом, а затем создать частную конечную точку с помощью бицепса. Теперь используйте PowerShell или CLI, чтобы обновить значение до отключенного. @SaibotDev
Развертывание с помощью 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'
}
}
]
}
}
Выход:
Вы ищете прямой подход только к бицепсу? @SaibotDev