Поделиться через


Создание ресурсов виртуальной сети с помощью Bicep

Многие развертывания Azure требуют развертывания и настройки сетевых ресурсов. С помощью Bicep можно определить сетевые ресурсы Azure.

виртуальные сети и подсети;

Определите виртуальные сети, создав ресурс с типом Microsoft.Network/virtualNetworks.

Настройка подсетей с помощью свойства подсетей

Виртуальные сети содержат подсети, которые являются логическими группами IP-адресов в виртуальной сети. Определить подсети в Bicep можно двумя способами: с помощью свойства subnets ресурса виртуальной сети и путем создания дочернего ресурса с типом Microsoft.Network/virtualNetworks/subnets.

Предупреждение

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

Подсети лучше всего определить в определении виртуальной сети, как в этом примере:

Следующий пример является частью большего примера. Для файла Bicep, который вы можете развернуть, см. полный файл.

param location string = resourceGroup().location

var virtualNetworkName = 'my-vnet'
var subnet1Name = 'Subnet-1'
var subnet2Name = 'Subnet-2'

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-11-01' = {
  name: virtualNetworkName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: subnet1Name
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: subnet2Name
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }

  resource subnet1 'subnets' existing = {
    name: subnet1Name
  }

  resource subnet2 'subnets' existing = {
    name: subnet2Name
  }
}

output subnet1ResourceId string = virtualNetwork::subnet1.id
output subnet2ResourceId string = virtualNetwork::subnet2.id

Хотя оба подхода позволяют определять и создавать подсети, между ними есть важное различие. Если вы определяете подсети с использованием дочерних ресурсов, при первом развертывании файла Bicep развертывается виртуальная сеть. После развертывания виртуальной сети развертывается каждая подсеть. Такое последовательное развертывание происходит потому, что Azure Resource Manager развертывает каждый ресурс отдельно.

При повторном развертывании того же файла Bicep возникает та же последовательность развертывания. Но виртуальная сеть развертывается без настройки подсетей, так как это свойство subnets фактически пустое. Затем, после перенастройки виртуальной сети, ресурсы подсетей повторно развертываются и повторно создается каждая подсеть. В некоторых случаях такое поведение приводит к потерям связи между ресурсами в вашей виртуальной сети во время развертывания. В других случаях Azure не позволяет изменять виртуальную сеть и развертывание завершается сбоем.

Получение доступа к ИД ресурсов подсети

Часто требуется ссылаться на ИД ресурсов подсети. При использовании свойства subnets для определения подсети вы можете применить ключевое словоexisting, чтобы также получить строго типизированную ссылку на подсеть, а затем обратиться к свойству id подсети:

Следующий пример является частью большего примера. Для файла Bicep, который вы можете развернуть, см. полный файл.

param location string = resourceGroup().location

var virtualNetworkName = 'my-vnet'
var subnet1Name = 'Subnet-1'
var subnet2Name = 'Subnet-2'

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-11-01' = {
  name: virtualNetworkName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: subnet1Name
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: subnet2Name
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }

  resource subnet1 'subnets' existing = {
    name: subnet1Name
  }

  resource subnet2 'subnets' existing = {
    name: subnet2Name
  }
}

output subnet1ResourceId string = virtualNetwork::subnet1.id
output subnet2ResourceId string = virtualNetwork::subnet2.id

В этом примере вместо определения полного ресурса подсети для доступа к ресурсу подсети используется ключевое слово existing. При этом нет рисков, описанных в предыдущем разделе.

Кроме того, вы можете объединить ключевые слова existing и scope для ссылки на ресурс виртуальной сети или подсети в другой группе ресурсов.

Группы безопасности сети

Группы безопасности сети часто используются для применения правил, контролирующих входящий и исходящий потоки трафика из подсети или сетевого интерфейса. Определение большого количества правил в файле Bicep и их совместное использование в нескольких файлах Bicep может быть трудоемким процессом. При работе со сложными или большими группами безопасности сети рекомендуем использовать шаблон файла общих переменных.

Частные конечные точки

Частные конечные точки должны быть утверждены. В некоторых случаях утверждение происходит автоматически. Но в других случаях для использования конечной точки вам необходимо утвердить ее.

Утверждение частной конечной точки — это операция, поэтому ее нельзя выполнить непосредственно в коде Bicep. Вызвать операцию можно с помощью скрипта развертывания. Кроме того, вы можете вызвать операцию вне файла Bicep, например в скрипте конвейера.