共用方式為


快速入門:使用 Azure PowerShell 使用 Azure 虛擬網絡 Manager 建立網格網路拓撲

使用 Azure PowerShell 管理虛擬網路的連線,開始使用 Azure 虛擬網絡 Manager。

在本快速入門中,您會部署三個虛擬網路,並使用 Azure 虛擬網絡 Manager 來建立網狀網路拓撲。 然後,確認已套用連線設定。

使用 Azure 虛擬網路管理員針對網格虛擬網路拓撲部署的資源圖表。

必要條件

  • 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶
  • 在本機使用PowerShell,而非透過 Azure Cloud Shell 執行本快速入門。 Azure Cloud Shell 中的 Az.Network 版本目前不支援 Azure 虛擬網絡 Manager Cmdlet。
  • 若要修改動態網路群組,您只能 透過 Azure RBAC 角色 指派獲得存取權。 不支持傳統管理員/舊版授權。

登入您的 Azure 帳戶並且選取您的訂用帳戶

若要開始您的設定,請登入您的 Azure 帳戶:

Connect-AzAccount

然後,連線到您的訂用帳戶:

Set-AzContext -Subscription <subscription name or id>

安裝 Azure PowerShell 模組

使用此指令安裝最新的 Az.Network Azure PowerShell 模組:

 Install-Module -Name Az.Network -RequiredVersion 5.3.0

建立資源群組

您必須先建立資源群組來裝載它,才能建立 Azure 虛擬網絡 Manager 實例。 使用 New-AzResourceGroup 來建立資源群組。 此範例會在美國東部位置建立名為 vnm-learn-eastus-001ResourceGroup 的資源群組:


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

定義範圍和存取類型

使用 New-AzNetworkManagerScope 定義 Azure 虛擬網絡 Manager 實例的範圍和存取類型。 此範例會定義具有單一訂用帳戶的範圍,並將存取類型設定為 Connectivity。 將取代<subscription_id>為您想要透過 Azure 虛擬網絡 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

建立 虛擬網絡 Manager 實例

使用 New-AzNetworkManager 建立 虛擬網絡 Manager 實例。 此範例會在美國東部位置建立名為 vnm-learn-eastus-001 的實例:

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

建立三個虛擬網路

使用 New-AzVirtualNetwork 建立三個虛擬網路。 此範例會在美國東部位置建立名為 vnet-learn-prod-eastus-001vnet-learn-prod-eastus-002vnet-learn-test-eastus-003 的虛擬網路。 如果您已經有想要建立網狀網路的虛擬網路,您可以跳到下一節。

$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

將子網新增至每個虛擬網路

若要完成虛擬網路的設定,請使用 Add-AzVirtualNetworkSubnetConfig,建立名為 default 的子網組態,其子網位址前綴為 /24。 然後,使用 Set-AzVirtualNetwork 將子網組態套用至虛擬網路。

$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

建立網路群組

虛擬網絡 管理員會將設定套用至虛擬網路群組,方法是將它們放在網路群組中。 使用 New-AzNetworkManagerGroup 建立網路群組。 此範例會在美國東部位置建立名為 ng-learn-prod-eastus-001 的網路群組:

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

定義網格組態的成員資格

建立網路群組之後,您可以新增虛擬網路來定義其成員資格。 您可以手動新增這些網路,或使用 Azure 原則。

手動新增成員資格

在這項工作中,您會使用 New-AzNetworkManagerStaticMember,將靜態成員 vnet-learn-prod-eastus-002 和 vnet-learn-prod-eastus-001 新增至網路群組 ng-learn-prod-eastus-001

靜態成員必須具有限定於網路群組的唯一名稱。 建議您使用虛擬網路標識碼的一致哈希。 此方法會使用 Azure Resource Manager 範本的實作 uniqueString()

    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

建立連線設定

在這項工作中,您會使用 New-AzNetworkManagerConnectivityConfiguration 和 New-AzNetworkManagerConnectivityGroupItem,使用網路群組 ng-learn-prod-eastus-001 建立連線設定:

  1. 建立連線群組專案:

    $gi = @{
        NetworkGroupId = $ng.Id
    }
    $groupItem = New-AzNetworkManagerConnectivityGroupItem @gi
    
  2. 建立組態群組,並將連線群組專案新增至其中:

    [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerConnectivityGroupItem]]$configGroup = @()
    $configGroup.Add($groupItem)
    
  3. 使用組態群組建立連線設定:

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

認可部署

使用 Deploy-AzNetworkManagerCommit將組態認可至目標區域。 此步驟會觸發您的設定以開始生效。

[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 

清除資源

如果您不再需要 Azure 虛擬網絡 Manager 實例,請先確定下列所有點都成立,再刪除資源:

  • 沒有任何組態部署至任何區域。
  • 所有組態都已刪除。
  • 所有網路群組都已刪除。

若要刪除資源:

  1. 透過部署空的組態 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. 使用 Remove-AzNetworkManagerConnectivityConfiguration移除連線設定:

    
    Remove-AzNetworkManagerConnectivityConfiguration -Name $connectivityconfig.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
    
    
  3. 使用 Remove-AzPolicy*移除原則資源:

    
    Remove-AzPolicyAssignment -Name $policyAssignment.Name
    Remove-AzPolicyAssignment -Name $policyDefinition.Name
    
    
  4. 使用 Remove-AzNetworkManagerGroup移除網路群組:

    Remove-AzNetworkManagerGroup -Name $ng.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
    
  5. 使用 Remove-AzNetworkManager刪除 虛擬網絡 Manager 實例:

    Remove-AzNetworkManager -name $networkManager.Name -ResourceGroupName $rg.Name
    
  6. 如果您不再需要您所建立的資源,請使用 Remove-AzResourceGroup 刪除資源群組:

    Remove-AzResourceGroup -Name $rg.Name -Force
    

下一步

既然您已建立 Azure 虛擬網絡 Manager 實例,請瞭解如何使用安全性系統管理員設定來封鎖網路流量: