次の方法で共有


クイックスタート: Azure Virtual Network Manager で Azure PowerShell を使用してメッシュ ネットワーク トポロジを作成する

Azure PowerShell を使用して、Azure Virtual Network Manager で仮想ネットワークの接続の管理を始めます。

このクイックスタートでは、3 つの仮想ネットワークをデプロイし、Azure Virtual Network Manager を使用してメッシュ ネットワーク トポロジを作成します。 次に、接続構成が適用されたことを確認します。

メッシュ仮想ネットワーク トポロジ用に 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-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 を使用して、サブネット アドレス プレフィックスが /24default という名前のサブネット構成を作成します。 その後、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-001vnet-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-AzNetworkManagerConnectivityConfigurationNew-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 Virtual Network 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 を使用して Virtual Network Manager インスタンスを削除します。

    Remove-AzNetworkManager -name $networkManager.Name -ResourceGroupName $rg.Name
    
  6. 作成したリソースが不要になったら、Remove-AzResourceGroup を使用してリソース グループを削除します。

    Remove-AzResourceGroup -Name $rg.Name -Force
    

次のステップ

Azure Virtual Network Manager インスタンスを作成したら、セキュリティ管理者の構成を使用してネットワーク トラフィックをブロックする方法について確認します。