Compartilhar via


Criar recursos de rede virtual usando o Bicep

Muitas implantações do Azure necessitam que os recursos de rede sejam implantados e configurados. Você pode usar o Bicep para definir seus recursos de rede do Azure.

Redes virtuais e sub-redes

Defina suas redes virtuais criando um recurso com o tipo Microsoft.Network/virtualNetworks.

Configurar sub-redes usando a propriedade de sub-redes

As redes virtuais contêm sub-redes, que são grupos lógicos de endereços IP na rede virtual. Há duas maneiras de definir sub-redes no Bicep: usando a propriedade subnets no recurso de rede virtual e criando um recurso filho com o tipo Microsoft.Network/virtualNetworks/subnets.

Aviso

Evite definir sub-redes como recursos filho. Essa abordagem pode resultar em tempo de inatividade para seus recursos durante implantações subsequentes ou implantações com falha.

É melhor definir suas sub-redes dentro da definição de rede virtual, como neste exemplo:

O exemplo a seguir faz parte de um exemplo maior. Para ver um arquivo Bicep que você pode implantar, consulte o arquivo completo.

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

Embora as duas abordagens permitam definir e criar sub-redes, há uma diferença importante. Ao definir suas sub-redes usando recursos filho, na primeira vez que o arquivo Bicep é implantado, a rede virtual é implantada. Em seguida, depois que a implantação da rede virtual é concluída, cada sub-rede é implantada. Esse sequenciamento ocorre porque o Azure Resource Manager implanta cada recurso individual separadamente.

Quando você reimplanta o mesmo arquivo Bicep, ocorre a mesma sequência de implantação. No entanto, a rede virtual é implantada sem qualquer sub-rede configurada nela, pois a \propriedade subnets está efetivamente vazia. Em seguida, depois que a rede virtual é reconfigurada, os recursos de sub-rede são implantados novamente, o que restabelece cada sub-rede. Em algumas situações, esse comportamento faz com que os recursos em sua rede virtual percam a conectividade durante a implantação. Em outras situações, o Azure impede que você modifique a rede virtual e sua implantação falhe.

Acessar IDs de recurso de sub-rede

Você precisa se referir à ID de recurso de uma sub-rede frequentemente. Ao usar a propriedade subnets para definir sua sub-rede, é possível usar a existing palavra-chave para também obter uma referência fortemente digitada à sub-rede e acessar a propriedade da sub-rede id:

O exemplo a seguir faz parte de um exemplo maior. Para ver um arquivo Bicep que você pode implantar, consulte o arquivo completo.

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

Como este exemplo usa a palavra-chave existing para acessar o recurso de sub-rede, em vez de definir o recurso de sub-rede completo, ele não tem os riscos descritos na seção anterior.

Você também pode combinar as palavras-chave existing e scope para se referir a uma rede virtual ou recurso de sub-rede em outro grupo de recursos.

Grupos de segurança de rede

Os grupos de segurança de rede são frequentemente usados para aplicar regras que controlam o fluxo de entrada e saída do tráfego de uma sub-rede ou adaptador de rede. Pode se tornar complicado definir um grande número de regras em um arquivo do Bicep e compartilhar regras em vários arquivos do Bicep. Considere usar o padrão de arquivo variável compartilhado ao trabalhar com grupos complexos ou grandes de segurança de rede.

Pontos de extremidade privados

Pontos de extremidade privados devem ser aprovados. Em algumas situações, a aprovação acontece automaticamente. Mas em outros cenários, você precisa aprovar o ponto de extremidade antes dele ser utilizável.

A aprovação do ponto de extremidade privado é uma operação, portanto, você não pode realizá-la diretamente no código do Bicep. No entanto, você pode usar um script de implantação para invocar a operação. Opcionalmente, é possível invocar a operação de fora do arquivo Bicep, como em um script de pipeline.