Share via


Creación de recursos de red virtual con Bicep

Muchas implementaciones de Azure requieren que se implementen y configuren recursos de red. Puede usar Bicep para definir los recursos de red de Azure.

Redes virtuales y subredes

Para definir las redes virtuales, cree un recurso con el tipo Microsoft.Network/virtualNetworks.

Configuración de subredes mediante la propiedad de subredes

Las redes virtuales contienen subredes, que son grupos lógicos de direcciones IP dentro de la red virtual. Puede definir las subredes en Bicep de dos maneras: mediante el uso de la propiedad subnets en el recurso de red virtual, y mediante la creación de un recurso secundario con el tipo Microsoft.Network/virtualNetworks/subnets.

Advertencia

Evite definir subredes como recursos secundarios. Este enfoque puede generar tiempo de inactividad de los recursos durante implementaciones posteriores, o bien implementaciones con errores.

Es mejor definir las subredes dentro de la definición de red virtual, como en este ejemplo:

El ejemplo siguiente forma parte de un ejemplo más grande. Para un archivo de Bicep que puede implementar, consulte el archivo completo.

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-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'
        }
      }
    ]
  }
}

Aunque ambos enfoques le permiten definir y crear subredes, hay una diferencia importante entre ellos. Al definir subredes mediante recursos secundarios, se implementa la red virtual la primera vez que se implementa el archivo de Bicep. Luego, una vez que se completa la implementación de la red virtual, se implementa cada subred. Esta secuenciación se debe a que Azure Resource Manager implementa cada recurso individual por separado.

Al volver a implementar el mismo archivo de Bicep, se produce la misma secuencia de implementación. Sin embargo, la red virtual se implementa sin ninguna subred configurada en ella porque la propiedad subnets está efectivamente vacía. Luego, una vez que se vuelve a configurar la red virtual, se vuelven a implementar los recursos de subred, lo que restablece cada subred. En algunas situaciones, este comportamiento hace que los recursos de la red virtual pierdan conectividad durante la implementación. En otras situaciones, Azure le impide modificar la red virtual y se produce un error en la implementación.

Acceso a los identificadores de recursos de subred

A menudo, necesita hacer referencia al identificador de recursos de una subred. Al usar la propiedad subnets para definir la subred, puede usar la palabra clave existing para obtener también una referencia fuertemente tipada a la subred y, luego, acceder a la propiedad id de la subred:

El ejemplo siguiente forma parte de un ejemplo más grande. Para un archivo de Bicep que puede implementar, consulte el archivo completo.

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-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 en este ejemplo se usa la palabra clave existing para acceder el recurso de subred, en lugar de definir el recurso completo de subred, no presenta los riesgos detallados en la sección anterior.

También puede combinar las palabras clave existing y scope para hacer referencia a una red virtual o a un recurso de subred de otro grupo de recursos.

Grupos de seguridad de red

Los grupos de seguridad de red se usan con frecuencia para aplicar reglas que controlan el flujo de tráfico entrante y saliente de una subred o interfaz de red. Puede resultar engorroso definir una gran cantidad de reglas dentro de un archivo de Bicep y compartir reglas en varios archivos de Bicep. Considere la posibilidad de utilizar el patrón de archivo de variables compartido cuando trabaje con grupos de seguridad de red complejos o grandes.

Puntos de conexión privados

Los puntos de conexión privados deben estar aprobados. En algunas situaciones, la aprobación se realiza automáticamente. Pero en otros escenarios, debe aprobar el punto de conexión para poder usarlo.

La aprobación del punto de conexión privado es una operación, por lo que no puede hacerla directamente en el código de Bicep. Sin embargo, puede usar un script de implementación para invocar la operación. Como alternativa, puede invocar la operación fuera del archivo de Bicep, como en un script de canalización.