快速入門:使用 Azure PowerShell 使用 Azure 虛擬網絡 Manager 建立網格網路拓撲
使用 Azure PowerShell 來管理虛擬網路的連線,以開始使用 Azure 虛擬網絡 Manager。
在本快速入門中,您會部署三個虛擬網路,並使用 Azure Virtual Network Manager 來建立網狀網路拓撲。 然後您會驗證已套用連線設定。
必要條件
- 具有有效訂用帳戶的 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 來建立資源群組。 此範例會在美國西部 2 區域中建立名為 resource-group 的資源群組:
# Create a resource group
$location = "West US 2"
$rg = @{
Name = 'resource-group'
Location = $location
}
New-AzResourceGroup @rg
定義範圍和存取類型
使用 New-AzNetworkManagerScope 定義 Azure 虛擬網絡 Manager 實例的範圍和存取類型。 此範例會定義具有單一訂用帳戶的範圍,並將存取類型設定為 Connectivity。 將取代<subscription_id>
為您想要透過 Azure 虛擬網絡 Manager 管理的訂用帳戶標識碼。
$subID= <subscription_id>
[System.Collections.Generic.List[string]]$subGroup = @()
$subGroup.Add("/subscriptions/$subID")
[System.Collections.Generic.List[String]]$access = @()
$access.Add("Connectivity");
$scope = New-AzNetworkManagerScope -Subscription $subGroup
建立 Virtual Network Manager 執行個體
使用 New-AzNetworkManager 建立 虛擬網絡 Manager 實例。 此範例會在美國西部 2 區域中建立名為 network-manager 的實例:
$avnm = @{
Name = 'network-manager'
ResourceGroupName = $rg.ResourceGroupName
NetworkManagerScope = $scope
NetworkManagerScopeAccess = $access
Location = $location
}
$networkmanager = New-AzNetworkManager @avnm
建立三個虛擬網路
使用 New-AzVirtualNetwork 建立三個虛擬網路。 此範例會在美國西部 2 區域中建立名為 vnet-spoke-001、vnet-spoke-002 和 vnet-hub-001 的虛擬網路。 如果您已經有想要建立網狀網路的虛擬網路,您可以跳到下一節。
$vnetspoke001 = @{
Name = 'vnet-spoke-001'
ResourceGroupName = $rg.ResourceGroupName
Location = $location
AddressPrefix = '10.0.0.0/16'
}
$vnet_spoke_001 = New-AzVirtualNetwork @vnetspoke001
$vnetspoke002 = @{
Name = 'vnet-spoke-002'
ResourceGroupName = $rg.ResourceGroupName
Location = $location
AddressPrefix = '10.1.0.0/16'
}
$vnet_spoke_002 = New-AzVirtualNetwork @vnetspoke002
$vnethub001 = @{
Name = 'vnet-hub-001'
ResourceGroupName = $rg.ResourceGroupName
Location = $location
AddressPrefix = '10.2.0.0/16'
}
$vnet_hub_001 = New-AzVirtualNetwork @vnethub001
將子網新增至每個虛擬網路
若要完成虛擬網路的設定,請使用 Add-AzVirtualNetworkSubnetConfig,建立名為 default 的子網組態,其子網位址前綴為 /24。 然後,使用 Set-AzVirtualNetwork 將子網組態套用至虛擬網路。
$subnet_vnetspoke001 = @{
Name = 'default'
VirtualNetwork = $vnet_spoke_001
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig_vnetspoke001 = Add-AzVirtualNetworkSubnetConfig @subnet_vnetspoke001
$vnet_spoke_001 | Set-AzVirtualNetwork
$subnet_vnetspoke002 = @{
Name = 'default'
VirtualNetwork = $vnet_spoke_002
AddressPrefix = '10.1.0.0/24'
}
$subnetConfig_vnetspoke002 = Add-AzVirtualNetworkSubnetConfig @subnet_vnetspoke002
$vnet_spoke_002 | Set-AzVirtualNetwork
$subnet_vnet_hub_001 = @{
Name = 'default'
VirtualNetwork = $vnet_hub_001
AddressPrefix = '10.2.0.0/24'
}
$subnetConfig_vnet_hub_001 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_hub_001
$vnet_hub_001 | Set-AzVirtualNetwork
建立網路群組
Virtual Network Manager 會將設定套用至虛擬網路群組,方法是將它們放在網路群組中。 使用 New-AzNetworkManagerGroup 建立網路群組。 此範例會在美國西部 2 區域中建立名為 network-group 的網路群組 :
$ng = @{
Name = 'network-group'
ResourceGroupName = $rg.ResourceGroupName
NetworkManagerName = $networkManager.Name
}
$ng = New-AzNetworkManagerGroup @ng
定義網格組態的成員資格
在這項工作中,您會使用 New-AzNetworkManagerStaticMember,將靜態成員 vnet-spoke-001 和 vnet-spoke-002 新增至網路群組網路群組。
靜態成員必須具有限定於網路群組的唯一名稱。 建議您使用虛擬網路標識碼的一致哈希。 此方法會使用 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_vnetspoke001 = @{
Name = Get-UniqueString $vnet_spoke_001.Id
ResourceGroupName = $rg.ResourceGroupName
NetworkGroupName = $ng.Name
NetworkManagerName = $networkManager.Name
ResourceId = $vnet_spoke_001.Id
}
$sm_vnetspoke001 = New-AzNetworkManagerStaticMember @sm_vnetspoke001
$sm_vnetspoke002 = @{
Name = Get-UniqueString $vnet_spoke_002.Id
ResourceGroupName = $rg.ResourceGroupName
NetworkGroupName = $ng.Name
NetworkManagerName = $networkManager.Name
ResourceId = $vnet_spoke_002.Id
}
$sm_vnetspoke002 = New-AzNetworkManagerStaticMember @sm_vnetspoke002
建立連線設定
在這項工作中,您會使用 New-AzNetworkManagerConnectivityConfiguration 和 New-AzNetworkManagerConnectivityGroupItem,建立與網路群組網路群組的聯機設定:
建立連線群組專案:
$gi = @{ NetworkGroupId = $ng.Id } $groupItem = New-AzNetworkManagerConnectivityGroupItem @gi
建立組態群組,並將連線群組專案新增至其中:
[System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerConnectivityGroupItem]]$configGroup = @() $configGroup.Add($groupItem)
使用組態群組建立連線設定:
$config = @{ Name = 'connectivity-configuration' ResourceGroupName = $rg.ResourceGroupName 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("westus2")
$deployment = @{
Name = $networkManager.Name
ResourceGroupName = $rg.ResourceGroupName
ConfigurationId = $configIds
TargetLocation = $target
CommitType = 'Connectivity'
}
Deploy-AzNetworkManagerCommit @deployment
清除資源
如果您不再需要 Azure 虛擬網絡 Manager 實例,而且其與資源相關聯,請刪除包含它們的資源群組。 刪除資源群組也會刪除您建立的資源。
使用 Remove-AzResourceGroup 刪除資源群組:
Remove-AzResourceGroup -Name $rg.ResourceGroupName -Force
下一步
既然您已建立 Azure 虛擬網絡 Manager 實例,請瞭解如何使用安全性系統管理員設定來封鎖網路流量: