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

Introducción a Azure Virtual Network Manager mediante el uso de Azure PowerShell para administrar la conectividad de 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.

Importante

Azure Virtual Network Manager está disponible con carácter general para Virtual Network Manager, para las configuraciones de conectividad en estrella tipo hub-and-spoke y para las configuraciones de seguridad con reglas de administración de seguridad. Las configuraciones de conectividad de malla permanecen en versión preliminar pública.

Esta versión preliminar se ofrece sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Prerrequisitos

  • Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
  • Realice este inicio rápido mediante PowerShell local, no a través de Azure Cloud Shell. La versión de Az.Network en Azure Cloud Shell no admite actualmente los cmdlets de Azure Virtual Network Manager.
  • Para modificar los grupos de red dinámicos, solo debe tener acceso mediante la asignación de roles de RBAC de Azure. No se admite la administración clásica o la autorización heredada.

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:

Connect-AzAccount

Luego, conéctela a la suscripción:

Set-AzContext -Subscription <subscription name or id>

Instalación del módulo de Azure PowerShell

Instale el módulo Az.Network de Azure PowerShell más reciente mediante este comando:

 Install-Module -Name Az.Network -RequiredVersion 5.3.0

Crear un grupo de recursos

Para poder crear una instancia de Azure Virtual Network Manager, debe crear un grupo de recursos para hospedarlo. Cree un grupo de recursos con New-AzResourceGroup. En el ejemplo siguiente, se crea un grupo de recursos llamado vnm-learn-eastus-001ResourceGroup en la ubicación Este de EE. UU:


$location = "East US"
$rg = @{
    Name = 'rg-learn-eastus-001'
    Location = $location
}
New-AzResourceGroup @rg

Definición del ámbito y el tipo de acceso

Defina el ámbito y el tipo de acceso para la instancia de Azure Virtual Network Manager mediante New-AzNetworkManagerScope. Este ejemplo define un ámbito con una suscripción única y establece el tipo de acceso en Conectividad. Reemplace <subscription_id> por el id. de la suscripción que desee administrar con Azure Virtual Network Manager.


Import-Module -Name Az.Network -RequiredVersion "5.3.0"

[System.Collections.Generic.List[string]]$subGroup = @()  
$subGroup.Add("/subscriptions/<subscription_id>")

[System.Collections.Generic.List[String]]$access = @()  
$access.Add("Connectivity"); 

$scope = New-AzNetworkManagerScope -Subscription $subGroup

Creación de una instancia de Virtual Network Manager

Cree una instancia de Virtual Network Manager mediante New-AzNetworkManager. En este ejemplo, se crea una instancia denominada vnm-learn-eastus-001 en la ubicación Este de EE. UU.:

$avnm = @{
    Name = 'vnm-learn-eastus-001'
    ResourceGroupName = $rg.Name
    NetworkManagerScope = $scope
    NetworkManagerScopeAccess = $access
    Location = $location
}
$networkmanager = New-AzNetworkManager @avnm

Crear tres redes virtuales

Cree tres redes virtuales mediante New-AzVirtualNetwork. En este ejemplo, se crean redes virtuales denominadas vnet-learn-prod-eastus-001, vnet-learn-prod-eastus-002 y vnet-learn-test-eastus-003 en la ubicación Este de EE. UU. Si ya tiene redes virtuales con las que desea crear una red de malla, puede ir directamente a la sección siguiente.

$vnet001 = @{
    Name = 'vnet-learn-prod-eastus-001'
    ResourceGroupName = $rg.Name
    Location = $location
    AddressPrefix = '10.0.0.0/16'    
}

$vnet_learn_prod_eastus_001 = New-AzVirtualNetwork @vnet001

$vnet002 = @{
    Name = 'vnet-learn-prod-eastus-002'
    ResourceGroupName = $rg.Name
    Location = $location
    AddressPrefix = '10.1.0.0/16'    
}
$vnet_learn_prod_eastus_002 = New-AzVirtualNetwork @vnet002

$vnet003 = @{
    Name = 'vnet-learn-test-eastus-003'
    ResourceGroupName = $rg.Name
    Location = $location
    AddressPrefix = '10.2.0.0/16'    
}
$vnet_learn_test_eastus_003 = New-AzVirtualNetwork @vnet003

Agregue una subred a cada una de las redes virtuales.

Para completar la configuración de las redes virtuales, cree una configuración de subred denominada default con un prefijo de dirección de subred de /24 mediante Add-AzVirtualNetworkSubnetConfig. Luego, use Set-AzVirtualNetwork para aplicar la configuración de subred a la red virtual.

$subnet_vnet001 = @{
    Name = 'default'
    VirtualNetwork = $vnet_learn_prod_eastus_001
    AddressPrefix = '10.0.0.0/24'
}
$subnetConfig_vnet001 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet001
$vnet_learn_prod_eastus_001 | Set-AzVirtualNetwork

$subnet_vnet002 = @{
    Name = 'default'
    VirtualNetwork = $vnet_learn_prod_eastus_002
    AddressPrefix = '10.1.0.0/24'
}
$subnetConfig_vnet002 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet002
$vnet_learn_prod_eastus_002 | Set-AzVirtualNetwork

$subnet_vnet003 = @{
    Name = 'default'
    VirtualNetwork = $vnet_learn_test_eastus_003
    AddressPrefix = '10.2.0.0/24'
}
$subnetConfig_vnet003 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet003
$vnet_learn_test_eastus_003 | Set-AzVirtualNetwork

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 redes mediante New-AzNetworkManagerGroup. En este ejemplo, se crea un grupo de redes denominado ng-learn-prod-eastus-001 en la ubicación Este de EE. UU:

$ng = @{
        Name = 'ng-learn-prod-eastus-001'
        ResourceGroupName = $rg.Name
        NetworkManagerName = $networkManager.Name
    }
    $ng = New-AzNetworkManagerGroup @ng

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

Después de crear el grupo de redes, debe definir su pertenencia mediante la adición de redes virtuales. Puede agregar estas redes manualmente o mediante Azure Policy.

Agregar pertenencia manualmente

En esta tarea, agregará los miembros estáticos vnet-learn-prod-eastus-001 y vnet-learn-prod-eastus-002 al grupo de redes ng-learn-prod-eastus-001 mediante New-AzNetworkManagerStaticMember.

Los miembros estáticos deben tener un nombre único cuyo ámbito sea el grupo de red. Se recomienda usar un hash coherente del id. de red virtual. Este enfoque usa la implementación uniqueString() de la plantilla de Azure Resource Manager.

    function Get-UniqueString ([string]$id, $length=13)
    {
    $hashArray = (new-object System.Security.Cryptography.SHA512Managed).ComputeHash($id.ToCharArray())
    -join ($hashArray[1..$length] | ForEach-Object { [char]($_ % 26 + [byte][char]'a') })
    }
$sm_vnet001 = @{
        Name = Get-UniqueString $vnet_learn_prod_eastus_001.Id
        ResourceGroupName = $rg.Name
        NetworkGroupName = $ng.Name
        NetworkManagerName = $networkManager.Name
        ResourceId = $vnet_learn_prod_eastus_001.Id
    }
    $sm_vnet001 = New-AzNetworkManagerStaticMember @sm_vnet001
$sm_vnet002 = @{
        Name = Get-UniqueString $vnet_learn_prod_eastus_002.Id
        ResourceGroupName = $rg.Name
        NetworkGroupName = $ng.Name
        NetworkManagerName = $networkManager.Name
        ResourceId = $vnet_learn_prod_eastus_002.Id
    }
    $sm_vnet002 = New-AzNetworkManagerStaticMember @sm_vnet002

Creación de una configuración de conectividad

En esta tarea, creará una configuración de conectividad con el grupo de red ng-learn-prod-eastus-001 mediante New-AzNetworkManagerConnectivityConfiguration y New-AzNetworkManagerConnectivityGroupItem:

  1. Crear un elemento de grupo de conectividad:

    $gi = @{
        NetworkGroupId = $ng.Id
    }
    $groupItem = New-AzNetworkManagerConnectivityGroupItem @gi
    
  2. Crear un grupo de configuración y agregar un elemento de grupo de conectividad a él:

    [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerConnectivityGroupItem]]$configGroup = @()
    $configGroup.Add($groupItem)
    
  3. Crear la configuración de conectividad con el grupo de configuración:

    $config = @{
        Name = 'cc-learn-prod-eastus-001'
        ResourceGroupName = $rg.Name
        NetworkManagerName = $networkManager.Name
        ConnectivityTopology = 'Mesh'
        AppliesToGroup = $configGroup
    }
    $connectivityconfig = New-AzNetworkManagerConnectivityConfiguration @config
        ```                        
    
    

Confirmación de la implementación

Confirme la configuración en las regiones de destino mediante Deploy-AzNetworkManagerCommit. Este paso activa la configuración para que empiece a surtir efecto.

[System.Collections.Generic.List[string]]$configIds = @()  
$configIds.add($connectivityconfig.id) 
[System.Collections.Generic.List[string]]$target = @()   
$target.Add("westus")     

$deployment = @{
    Name = $networkManager.Name
    ResourceGroupName = $rg.Name
    ConfigurationId = $configIds
    TargetLocation = $target
    CommitType = 'Connectivity'
}
Deploy-AzNetworkManagerCommit @deployment 

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 poder 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 mediante la implementación de una configuración vacía con Deploy-AzNetworkManagerCommit:

    [System.Collections.Generic.List[string]]$configIds = @()
    [System.Collections.Generic.List[string]]$target = @()   
    $target.Add("westus")     
    $removedeployment = @{
        Name = 'vnm-learn-eastus-001'
        ResourceGroupName = $rg.Name
        ConfigurationId = $configIds
        Target = $target
        CommitType = 'Connectivity'
    }
    Deploy-AzNetworkManagerCommit @removedeployment
    
  2. Quite la configuración de conectividad mediante Remove-AzNetworkManagerConnectivityConfiguration:

    
    Remove-AzNetworkManagerConnectivityConfiguration -Name $connectivityconfig.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
    
    
  3. Quite los recursos de directiva mediante Remove-AzPolicy*:

    
    Remove-AzPolicyAssignment -Name $policyAssignment.Name
    Remove-AzPolicyAssignment -Name $policyDefinition.Name
    
    
  4. Quite el grupo de redes mediante Remove-AzNetworkManagerGroup:

    Remove-AzNetworkManagerGroup -Name $ng.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
    
  5. Elimine la instancia de Virtual Network Manager mediante Remove-AzNetworkManager:

    Remove-AzNetworkManager -name $networkManager.Name -ResourceGroupName $rg.Name
    
  6. Si ya no necesita los recursos que ha creado, elimine el grupo de recursos mediante Remove-AzResourceGroup:

    Remove-AzResourceGroup -Name $rg.Name -Force
    

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: