次の方法で共有


クイックスタート: 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 を使用してリソース グループを作成します。 次の例では、resource-group という名前のリソース グループを "米国西部 2" リージョンに作成します。

# Create a resource group
$location = "West US 2"
$rg = @{
    Name = 'resource-group'
    Location = $location
}
New-AzResourceGroup @rg

スコープとアクセスの種類を定義する

New-AzNetworkManagerScope を使用して、Azure Virtual Network Manager インスタンスのスコープとアクセスの種類を定義します。 この例では、1 つのサブスクリプションを含むスコープを定義し、アクセスの種類を Connectivity に設定します。 <subscription_id> を、Azure Virtual Network Manager を使用して管理するサブスクリプションの ID に置き換えます。

$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 を使用して Virtual Network Manager インスタンスを作成します。 この例では、network-manager という名前のインスタンスを "米国西部 2" リージョンに作成します。

$avnm = @{
    Name = 'network-manager'
    ResourceGroupName = $rg.ResourceGroupName
    NetworkManagerScope = $scope
    NetworkManagerScopeAccess = $access
    Location = $location
}
$networkmanager = New-AzNetworkManager @avnm

3 つの仮想ネットワークを作成する

New-AzVirtualNetwork を使用して、3 つの仮想ネットワークを作成します。 この例では、vnet-spoke-001vnet-spoke-002、および vnet-hub-001 という名前の仮想ネットワークを "米国西部 2" リージョンに作成します。 作成するメッシュ ネットワークに含める仮想ネットワークが既にある場合は、次のセクションに進めます。

$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 を使用して、サブネット アドレス プレフィックスが /24default という名前のサブネット構成を作成します。 その後、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 を使用してネットワーク グループを作成します。 次の例では、network-group という名前のネットワーク グループを米国西部 2 リージョンに作成します。

$ng = @{
        Name = 'network-group'
        ResourceGroupName = $rg.ResourceGroupName
        NetworkManagerName = $networkManager.Name
    }
    $ng = New-AzNetworkManagerGroup @ng

メッシュ構成のメンバーシップを定義する

このタスクでは、New-AzNetworkManagerStaticMember を使用して、静的メンバーの vnet-spoke-001vnet-spoke-002 をネットワーク グループ network-group に追加します。

静的メンバーには、ネットワーク グループをスコープとする一意の名前が必要です。 仮想ネットワーク 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_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-AzNetworkManagerConnectivityConfigurationNew-AzNetworkManagerConnectivityGroupItem を使用して、ネットワーク グループ network-group での接続構成を作成します。

  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 = '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 Virtual Network Manager インスタンスとその関連リソースが不要になったら、それらを含むリソース グループを削除します。 リソース グループを削除すると、作成したリソースも削除されます。

  1. Remove-AzResourceGroup を使用して、リソース グループを削除します。

    Remove-AzResourceGroup -Name $rg.ResourceGroupName -Force
    

次のステップ

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