Inicio rápido: creación de una topología de red de malla con Azure Virtual Network Manager mediante la CLI de Azure

Introducción a Azure Virtual Network Manager mediante la CLI de Azure para administrar la conectividad de todas las redes virtuales.

En este artículo de inicio rápido, implementará tres redes virtuales y usará Azure Virtual Network Manager para crear una topología de red de malla. Después, compruebe si se ha aplicado la configuración de conectividad.

Diagrama de recursos implementados para una topología de red virtual en malla con el administrador de red virtual de Azure.

Requisitos previos

Iniciar sesión en la cuenta de Azure y seleccione la suscripción

Para empezar la configuración, inicie sesión en la cuenta de Azure. Si usa la característica Pruébelo de CloudShell, inicia sesión de manera automática.

az login

Seleccione la suscripción en la que se implementa Virtual Network Manager:

az account set \
    --subscription "<subscription_id>"

Actualice la extensión de Virtual Network Manager para la CLI de Azure:

az extension update --name virtual-network-manager

Crear un grupo de recursos

Para poder implementar Azure Virtual Network Manager, debe crear un grupo de recursos para hospedarlo con az group create. En el ejemplo siguiente, crea un grupo de recursos denominado myAVNMResourceGroup en la ubicación Oeste de EE. UU:

az group create \
    --name "myAVNMResourceGroup" \
    --location "westus"

Creación de una instancia de Virtual Network Manager

Defina el ámbito y el tipo de acceso para esta instancia de Azure Virtual Network Manager. Cree el ámbito mediante az network manager create. Reemplace el valor <subscription_id> por la suscripción para la que desea que Virtual Network Manager administre las redes virtuales. Reemplace <mgName\> por el grupo de administración que desea administrar.

az network manager create \
    --location "westus" \
    --name "myAVNM" \
    --resource-group "myAVNMResourceGroup" \
    --scope-accesses "Connectivity" "SecurityAdmin" \
    --network-manager-scopes subscriptions="/subscriptions/<subscription_id>"

Creación de un grupo de red

Virtual Network Manager aplica configuraciones a grupos de redes virtuales al colocarlos en grupos de redes. Cree un grupo de red mediante az network manager group create:

az network manager group create \
    --name "myNetworkGroup" \
    --network-manager-name "myAVNM" \
    --resource-group "myAVNMResourceGroup" \
    --description "Network Group for Production virtual networks"

Creación de redes virtuales

Cree cinco redes virtuales mediante az network vnet create. En este ejemplo, se crean redes virtuales denominadas VNetA, VNetB, VNetC y VNetD en la ubicación Oeste de EE. UU. Cada red virtual tiene una etiqueta de networkType que se usa para la pertenencia dinámica. Si ya tiene redes virtuales con las que desea crear una red de malla, puede ir directamente a la sección siguiente.

az network vnet create \
    --name "VNetA" \
    --resource-group "myAVNMResourceGroup" \
    --address-prefix "10.0.0.0/16" \
    --tags "NetworkType=Prod"

az network vnet create \
    --name "VNetB" \
    --resource-group "myAVNMResourceGroup" \
    --address-prefix "10.1.0.0/16" \
    --tags "NetworkType=Prod"

az network vnet create \
    --name "VNetC" \
    --resource-group "myAVNMResourceGroup" \
    --address-prefix "10.2.0.0/16" \
    --tags "NetworkType=Prod"

az network vnet create \
    --name "VNetD" \
    --resource-group "myAVNMResourceGroup" \
    --address-prefix "10.3.0.0/16" \
    --tags "NetworkType=Test"

az network vnet create \
    --name "VNetE" \
    --resource-group "myAVNMResourceGroup" \
    --address-prefix "10.4.0.0/16" \
    --tags "NetworkType=Test"

Agregue una subred a cada una de las redes virtuales.

Complete la configuración de las redes virtuales al agregar una subred /24 a cada una. Cree una configuración de subred denominada default mediante az network vnet subnet create:

az network vnet subnet create \
    --name "default" \
    --resource-group "myAVNMResourceGroup" \
    --vnet-name "VNetA" \
    --address-prefix "10.0.0.0/24"

az network vnet subnet create \
    --name "default" \
    --resource-group "myAVNMResourceGroup" \
    --vnet-name "VNetB" \
    --address-prefix "10.1.0.0/24"

az network vnet subnet create \
    --name "default" \
    --resource-group "myAVNMResourceGroup" \
    --vnet-name "VNetC" \
    --address-prefix "10.2.0.0/24"

az network vnet subnet create \
    --name "default" \
    --resource-group "myAVNMResourceGroup" \
    --vnet-name "VNetD" \
    --address-prefix "10.3.0.0/24"

az network vnet subnet create \
    --name "default" \
    --resource-group "myAVNMResourceGroup" \
    --vnet-name "VNetE" \
    --address-prefix "10.4.0.0/24"

Definición de pertenencia a una configuración de malla

Azure Virtual Network Manager permite usar dos métodos para agregar pertenencia a un grupo de red. La pertenencia estática implica agregar redes virtuales de forma manual, y la pertenencia dinámica implica el uso de Azure Policy para agregar redes virtuales de manera dinámica en función de las condiciones. Seleccione la opción que desea completar para la pertenencia a la configuración de malla.

Opción de pertenencia estática

Con la pertenencia estática, usted agrega de forma manual tres redes virtuales para la configuración de malla al grupo de red con az network manager group static-member create. Reemplace <subscription_id> por la suscripción con la que se han creado estas redes virtuales.

az network manager group static-member create \
    --name "VNetA" \
    --network-group "myNetworkGroup" \
    --network-manager "myAVNM" \
    --resource-group "myAVNMResourceGroup" \
    --resource-id "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/virtualnetworks/VNetA"
az network manager group static-member create \
    --name "VNetB" \
    --network-group "myNetworkGroup" \
    --network-manager "myAVNM" \
    --resource-group "myAVNMResourceGroup" \
    --resource-id "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/virtualnetworks/VNetB"
az network manager group static-member create \
    --name "VNetC" \
    --network-group "myNetworkGroup" \
    --network-manager "myAVNM" \
    --resource-group "myAVNMResourceGroup" \
    --resource-id "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/virtualnetworks/VNetC"

Opción de pertenencia dinámica

Mediante el uso de Azure Policy, puede agregar dinámicamente las tres redes virtuales con un valor de networkType al grupo de red Prod. Estas tres redes virtuales se volverán parte de la configuración de malla.

Puede aplicar directivas a una suscripción o a un grupo de administración y siempre debe definirlas en o por encima del nivel en el que las cree. Solo se agregan a un grupo de redes las redes virtuales dentro de un ámbito de directiva.

Crear una definición de directiva

Cree una definición de directiva mediante az policy definition create para redes virtuales etiquetadas como Prod. Reemplace <subscription_id> por la suscripción a la que desea aplicar esta directiva. Si desea aplicarlo a un grupo de administración, reemplace --subscription <subscription_id> por --management-group <mgName>.

az policy definition create \
    --name "ProdVNets" \
    --description "Choose Prod virtual networks only" \
    --rules "{\"if\":{\"allOf\":[{\"field\":\"Name\",\"contains\":\"VNet\"},{\"field\":\"tags['NetworkType']\",\"equals\":\"Prod\"}]},\"then\":{\"effect\":\"addToNetworkGroup\",\"details\":{\"networkGroupId\":\"/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup\"}}}" \
    --subscription <subscription_id> \
    --mode "Microsoft.Network.Data"

Aplicar una definición de directiva

Después de definir una directiva, debe aplicarla mediante az policy assignment create. Reemplace <subscription_id> por la suscripción a la que desea aplicar esta directiva. Si desea aplicarla a un grupo de administración, reemplace --scope "/subscriptions/<subscription_id>" por --scope "/providers/Microsoft.Management/managementGroups/<mgName> y <mgName\> por el grupo de administración.



az policy assignment create \
    --name "ProdVNets" \
    --description "Take only virtual networks tagged NetworkType:Prod" \
    --scope "/subscriptions/<subscription_id>" \
    --policy "/subscriptions/<subscription_id>/providers/Microsoft.Authorization/policyDefinitions/ProdVNets"

Creación de una configuración

Ahora que ha creado el grupo de red y le ha dado las redes virtuales correctas, cree una configuración de topología de red de malla mediante az network manager connect-config create. Reemplace <subscription_id> con la suscripción.

az network manager connect-config create \
    --configuration-name "connectivityconfig" \
    --description "Production Mesh Connectivity Config Example" \
    --applies-to-groups network-group-id="/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup" \
    --connectivity-topology "Mesh" \
    --network-manager-name "myAVNM" \
    --resource-group "myAVNMResourceGroup"

Confirmación de la implementación

Para que la configuración surta efecto, confirme la configuración en las regiones de destino mediante az network manager post-commit:

az network manager post-commit \
    --network-manager-name "myAVNM" \
    --commit-type "Connectivity" \
    --configuration-ids "/subscriptions/<subscription_id>/resourceGroups/myANVMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/connectivityConfigurations/connectivityconfig" \
    --target-locations "westus" \
    --resource-group "myAVNMResourceGroup"

Comprobar la configuración

Las redes virtuales muestran las configuraciones aplicadas a estas al usar az network manager list-effective-connectivity-config:

az network manager list-effective-connectivity-config \
    --resource-group "myAVNMResourceGroup" \
    --virtual-network-name "VNetA"

az network manager list-effective-connectivity-config \
    --resource-group "myAVNMResourceGroup" \
    --virtual-network-name "VNetB"


az network manager list-effective-connectivity-config \
    --resource-group "myAVNMResourceGroup" \
    --virtual-network-name "VNetC"

az network manager list-effective-connectivity-config \
    --resource-group "myAVNMResourceGroup" \
    --virtual-network-name "VNetD"

En el caso de las redes virtuales que forman parte de la configuración de conectividad, obtendrá un resultado similar al siguiente ejemplo:

{
  "skipToken": "",
  "value": [
    {
      "appliesToGroups": [
        {
          "groupConnectivity": "None",
          "isGlobal": "False",
          "networkGroupId": "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup",
          "useHubGateway": "False"
        }
      ],
      "configurationGroups": [
        {
          "description": "Network Group for Production virtual networks",
          "id": "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNetworkGroup",
          "provisioningState": "Succeeded",
          "resourceGroup": "myAVNMResourceGroup"
        }
      ],
      "connectivityTopology": "Mesh",
      "deleteExistingPeering": "False",
      "description": "Production Mesh Connectivity Config Example",
      "hubs": [],
      "id": "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/connectivityConfigurations/connectivityconfig",
      "isGlobal": "False",
      "provisioningState": "Succeeded",
      "resourceGroup": "myAVNMResourceGroup"
    }
  ]
}

En el caso de las redes virtuales que no forman parte del grupo de red, como VNetD, se muestra una salida similar al siguiente ejemplo:

az network manager list-effective-connectivity-config     --resource-group "myAVNMResourceGroup"     --virtual-network-name "VNetD-test"
{
  "skipToken": "",
  "value": []
}

Limpieza de recursos

Si ya no necesita la instancia de Azure Virtual Network Manager, asegúrese de que todos los elementos siguientes se cumplan antes de eliminar el recurso:

  • No hay implementaciones de configuraciones en ninguna región.
  • Se han eliminado todas las configuraciones.
  • Se han eliminado todos los grupos de red.

Para eliminar el recurso:

  1. Quite la implementación de conectividad sin confirmar ninguna configuración con az network manager post-commit:

    az network manager post-commit \
        --network-manager-name "myAVNM" \
        --commit-type "Connectivity" \
        --target-locations "westus" \
        --resource-group "myAVNMResourceGroup"
    
  2. Quite la configuración de conectividad mediante az network manager connect-config delete:

    az network manager connect-config delete \
        --configuration-name "connectivityconfig" \
        --name "myAVNM" \
        --resource-group "myAVNMResourceGroup"
    
  3. Quite el grupo de red mediante az network manager group delete:

    az network manager group delete \
        --name "myNetworkGroup" \
        --network-manager-name "myAVNM" \
        --resource-group "myAVNMResourceGroup"
    
  4. Elimine la instancia del administrador de red mediante az network manager delete:

    az network manager delete \
        --name "myAVNM" \
        --resource-group "myAVNMResourceGroup"
    
  5. Si ya no necesita el recurso que ha creado, elimine el grupo de recursos mediante az group delete:

    az group delete \
        --name "myAVNMResourceGroup"
    

Pasos siguientes

Ahora que ha creado una instancia de Azure Virtual Network Manager, aprenda a bloquear el tráfico mediante la configuración de un administrador de seguridad: