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.
Requisitos previos
- 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:
Crear un elemento de grupo de conectividad:
$gi = @{ NetworkGroupId = $ng.Id } $groupItem = New-AzNetworkManagerConnectivityGroupItem @gi
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)
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:
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
Quite la configuración de conectividad mediante
Remove-AzNetworkManagerConnectivityConfiguration
:Remove-AzNetworkManagerConnectivityConfiguration -Name $connectivityconfig.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
Quite los recursos de directiva mediante
Remove-AzPolicy*
:Remove-AzPolicyAssignment -Name $policyAssignment.Name Remove-AzPolicyAssignment -Name $policyDefinition.Name
Quite el grupo de redes mediante
Remove-AzNetworkManagerGroup
:Remove-AzNetworkManagerGroup -Name $ng.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
Elimine la instancia de Virtual Network Manager mediante
Remove-AzNetworkManager
:Remove-AzNetworkManager -name $networkManager.Name -ResourceGroupName $rg.Name
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: