快速入門:使用 Azure CLI 使用 Azure 虛擬網絡 Manager 建立網格網路拓撲
使用 Azure CLI 來管理所有虛擬網路的連線,以開始使用 Azure 虛擬網絡 Manager。
在本快速入門中,您會部署三個虛擬網路,並使用 Azure Virtual Network Manager 來建立網狀網路拓撲。 然後您會驗證已套用連線設定。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 最新的 Azure CLI,或者您可以在入口網站中使用 Azure Cloud Shell。
- Azure 虛擬網絡 Manager 擴充功能。 若要新增它,請執行
az extension add -n virtual-network-manager
。 - 若要修改動態網路群組,您只能透過 Azure RBAC 角色指派來獲得存取權。 不支持傳統管理員/舊版授權。
登入您的 Azure 帳戶並且選取您的訂用帳戶
若要開始您的組態,請登入您的 Azure 帳戶。 如果您使用 Cloud Shell 試用功能 ,則會自動登入。
az login
選取部署 虛擬網絡 管理員的訂用帳戶:
az account set \
--subscription "<subscription_id>"
更新 Azure CLI 的 虛擬網絡 Manager 擴充功能:
az extension update --name virtual-network-manager
建立資源群組
您必須先建立資源群組,才能部署 Azure 虛擬網絡 Manager,才能使用 az group create 來裝載它。 此範例會在美國西部位置建立名為 myAVNMResourceGroup 的資源群組:
az group create \
--name "myAVNMResourceGroup" \
--location "westus"
建立 Virtual Network Manager 執行個體
定義這個 虛擬網絡 Manager 實例的範圍和存取類型。 使用 az network manager create 建立範圍。 將 值<subscription_id>
取代為您想要 虛擬網絡 管理員管理虛擬網路的訂用帳戶。 將取代 <mgName\>
為您想要管理的管理群組。
az network manager create \
--location "westus" \
--name "myAVNM" \
--resource-group "myAVNMResourceGroup" \
--scope-accesses "Connectivity" "SecurityAdmin" \
--network-manager-scopes subscriptions="/subscriptions/<subscription_id>"
建立網路群組
Virtual Network Manager 會將設定套用至虛擬網路群組,方法是將它們放在網路群組中。 使用 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"
建立虛擬網路
使用 az network vnet create 建立五個虛擬網路。 此範例會在美國西部位置建立名為 VNetA、VNetB、VNetC 和 VNetD 的虛擬網路。 每個虛擬網路都有用於動態成員資格的標記 networkType
。 如果您已經有想要建立網狀網路的虛擬網路,您可以跳到下一節。
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"
將子網新增至每個虛擬網路
將 /24 子網新增至每個子網,以完成虛擬網路的設定。 使用 az network vnet subnet create 建立名為 default 的子網組態:
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"
定義網格組態的成員資格
Azure 虛擬網絡 Manager 允許將成員資格新增至網路群組的兩種方法。 靜態成員資格牽涉到手動新增虛擬網路,而動態成員資格牽涉到使用 Azure 原則 根據條件動態新增虛擬網路。 針對網格組態成員資格,選擇您想要完成的選項。
靜態成員資格選項
藉由使用靜態成員資格,您可以透過 az network manager group static-member create,手動將網格組態的三個虛擬網路新增至您的網路群組。 將取代 <subscription_id>
為建立這些虛擬網路的訂用帳戶。
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"
動態成員資格選項
藉由使用 Azure 原則,您可以動態地將三個networkType
虛擬網路的值Prod
新增至網路群組。 這三個虛擬網路將成為網格組態的一部分。
您可以將原則套用至訂用帳戶或管理群組,而且您一律必須在建立原則 的層級或更高 層級定義原則。 原則範圍內只有虛擬網路會新增至網路群組。
建立原則定義
針對標記為Prod
的虛擬網路,使用 az policy definition create 建立原則定義。 將取代 <subscription_id>
為您要套用此原則的訂用帳戶。 如果您要將它套用至管理群組,請將 取代 --subscription <subscription_id>
為 --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"
套用原則定義
定義原則之後,您必須使用 az policy assignment create 加以套用。 將取代 <subscription_id>
為您要套用此原則的訂用帳戶。 如果您要將它套用至管理群組,請將 取代--scope "/subscriptions/<subscription_id>"
--scope "/providers/Microsoft.Management/managementGroups/<mgName>
為 ,並以您的管理群組取代 <mgName\>
。
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"
建立設定
既然您已建立網路群組,並提供正確的虛擬網路,請使用 az network manager connect-config create 建立網狀網路拓撲組態。 將 <subscription_id>
取代為您的訂用帳戶。
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"
認可部署
若要讓組態生效,請使用 az network manager post-commit 將設定認可至目標區域:
az network manager post-commit \
--network-manager-name "myAVNM" \
--commit-type "Connectivity" \
--configuration-ids "/subscriptions/<subscription_id>/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/networkManagers/myAVNM/connectivityConfigurations/connectivityconfig" \
--target-locations "westus" \
--resource-group "myAVNMResourceGroup"
驗證設定
當您使用 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"
針對屬於連線設定一部分的虛擬網路,您會取得類似此範例的輸出:
{
"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"
}
]
}
對於不屬於網路群組的虛擬網路,例如 VNetD,會出現類似此範例的輸出:
az network manager list-effective-connectivity-config --resource-group "myAVNMResourceGroup" --virtual-network-name "VNetD-test"
{
"skipToken": "",
"value": []
}
清除資源
如果您不再需要 Azure 虛擬網絡 Manager 實例,請先確定下列所有點都成立,再刪除資源:
- 沒有任何組態部署至任何區域。
- 所有組態都已刪除。
- 所有網路群組都已刪除。
若要刪除資源:
使用 az network manager post-commit 認可后,不認可任何組態來移除連線部署:
az network manager post-commit \ --network-manager-name "myAVNM" \ --commit-type "Connectivity" \ --target-locations "westus" \ --resource-group "myAVNMResourceGroup"
使用 az network manager connect-config delete 移除連線設定:
az network manager connect-config delete \ --configuration-name "connectivityconfig" \ --name "myAVNM" \ --resource-group "myAVNMResourceGroup"
使用 az network manager group delete 移除網络群組:
az network manager group delete \ --name "myNetworkGroup" \ --network-manager-name "myAVNM" \ --resource-group "myAVNMResourceGroup"
使用 az network manager delete 刪除網络管理員實例:
az network manager delete \ --name "myAVNM" \ --resource-group "myAVNMResourceGroup"
如果您不再需要您所建立的資源,請使用 az group delete 刪除資源群組:
az group delete \ --name "myAVNMResourceGroup"
下一步
既然您已建立 Azure 虛擬網絡 Manager 實例,請瞭解如何使用安全性系統管理員設定來封鎖網路流量: