クイックスタート: Azure Virtual Network Manager で Azure PowerShell を使用してメッシュ ネットワーク トポロジを作成する
Azure PowerShell を使用して、Azure Virtual Network Manager で仮想ネットワークの接続の管理を始めます。
このクイックスタートでは、3 つの仮想ネットワークをデプロイし、Azure Virtual Network Manager を使用してメッシュ ネットワーク トポロジを作成します。 次に、接続構成が適用されたことを確認します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- このクイックスタートは、Azure Cloud Shell ではなく、PowerShell をローカルで使用して実行します。 Azure Cloud Shell の Az.Network のバージョンでは現在、Azure Virtual Network Manager コマンドレットがサポートされていません。
- 動的ネットワーク グループを変更するには、アクセス権の付与が 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 Virtual Network Manager インスタンスを作成する前に、それをホストするリソース グループを作成する必要があります。 New-AzResourceGroup を使用してリソース グループを作成します。 この例では、vnm-learn-eastus-001ResourceGroup という名前のリソース グループを米国東部の場所に作成します。
$location = "East US"
$rg = @{
Name = 'rg-learn-eastus-001'
Location = $location
}
New-AzResourceGroup @rg
スコープとアクセスの種類を定義する
New-AzNetworkManagerScope を使用して、Azure Virtual Network Manager インスタンスのスコープとアクセスの種類を定義します。 この例では、1 つのサブスクリプションを含むスコープを定義し、アクセスの種類を Connectivity に設定します。 <subscription_id>
を、Azure Virtual Network Manager を使用して管理するサブスクリプションの ID に置き換えます。
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
Virtual Network Manager インスタンスを作成する
New-AzNetworkManager を使用して Virtual Network Manager インスタンスを作成します。 この例では、vnm-learn-eastus-001 という名前のインスタンスを米国東部の場所に作成します。
$avnm = @{
Name = 'vnm-learn-eastus-001'
ResourceGroupName = $rg.Name
NetworkManagerScope = $scope
NetworkManagerScopeAccess = $access
Location = $location
}
$networkmanager = New-AzNetworkManager @avnm
3 つの仮想ネットワークを作成する
New-AzVirtualNetwork を使用して、3 つの仮想ネットワークを作成します。 この例では、vnet-learn-prod-eastus-001、vnet-learn-prod-eastus-002、vnet-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 を使用して、サブネット アドレス プレフィックスが /24 の default という名前のサブネット構成を作成します。 その後、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
ネットワーク グループを作成する
Virtual Network Manager では、ネットワーク グループに仮想ネットワークを配置して、仮想ネットワークのグループに構成を適用します。 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 Policy を使用して追加できます。
メンバーシップを手動で追加する
このタスクでは、New-AzNetworkManagerStaticMember を使用して、静的メンバーの vnet-learn-prod-eastus-001 と vnet-learn-prod-eastus-002 をネットワーク グループ ng-learn-prod-eastus-001 に追加します。
静的メンバーには、ネットワーク グループをスコープとする一意の名前が必要です。 仮想ネットワーク ID の一貫性のあるハッシュを使用することをお勧めします。 この方法では、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 での接続構成を作成します。
接続グループ項目を作成します。
$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 = '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 Virtual Network Manager インスタンスが不要になった場合は、リソースを削除する前に、次のすべての点が当てはまることを確認してください。
- どのリージョンにも構成のデプロイはありません。
- すべての構成が削除されました。
- すべてのネットワーク グループが削除されました。
リソースを削除するには:
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
Remove-AzNetworkManagerConnectivityConfiguration
を使用して接続構成を削除します。Remove-AzNetworkManagerConnectivityConfiguration -Name $connectivityconfig.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
Remove-AzPolicy*
を使用してポリシー リソースを削除します。Remove-AzPolicyAssignment -Name $policyAssignment.Name Remove-AzPolicyAssignment -Name $policyDefinition.Name
Remove-AzNetworkManagerGroup
を使用してネットワーク グループを削除します。Remove-AzNetworkManagerGroup -Name $ng.Name -ResourceGroupName $rg.Name -NetworkManagerName $networkManager.Name
Remove-AzNetworkManager
を使用して Virtual Network Manager インスタンスを削除します。Remove-AzNetworkManager -name $networkManager.Name -ResourceGroupName $rg.Name
作成したリソースが不要になったら、Remove-AzResourceGroup を使用してリソース グループを削除します。
Remove-AzResourceGroup -Name $rg.Name -Force
次のステップ
Azure Virtual Network Manager インスタンスを作成したら、セキュリティ管理者の構成を使用してネットワーク トラフィックをブロックする方法について確認します。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示