クイックスタート: 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
リソース グループを作成する
このタスクでは、ネットワーク マネージャー インスタンスをホストするリソース グループを作成します。 New-AzResourceGroup を使用してリソース グループを作成します。 次の例では、resource-group という名前のリソース グループを "米国西部 2" リージョンに作成します。
# Create a resource group
$location = "westus2"
$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.Name
NetworkManagerScope = $scope
NetworkManagerScopeAccess = $access
Location = $location
}
$networkmanager = New-AzNetworkManager @avnm
3 つの仮想ネットワークを作成する
このタスクでは、New-AzVirtualNetwork を使用して、3 つの仮想ネットワークを作成します。 この例では、"(米国) 米国西部 2" リージョンに、vnet-00、vnet-01、vnet-02 という仮想ネットワークを作成します。 作成するメッシュ ネットワークに含める仮想ネットワークが既にある場合は、次のセクションに進めます。
$vnet_00 = @{
Name = 'vnet-00'
ResourceGroupName = $rg.Name
Location = $location
AddressPrefix = '10.0.0.0/16'
}
$vnet_00 = New-AzVirtualNetwork @vnet_00
$vnet_01 = @{
Name = 'vnet-01'
ResourceGroupName = $rg.Name
Location = $location
AddressPrefix = '10.1.0.0/16'
}
$vnet_01 = New-AzVirtualNetwork @vnet_01
$vnet_02 = @{
Name = 'vnet-02'
ResourceGroupName = $rg.Name
Location = $location
AddressPrefix = '10.2.0.0/16'
}
$vnet_02 = New-AzVirtualNetwork @vnet_02
各仮想ネットワークにサブネットを追加します。
このタスクでは、Add-AzVirtualNetworkSubnetConfig を使用して、サブネット アドレス プレフィックスが /24 である default というサブネット構成を作成します。 その後、Set-AzVirtualNetwork を使用して、サブネット構成を仮想ネットワークに適用します。
$subnet_vnet_00 = @{
Name = 'default'
VirtualNetwork = $vnet_00
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig_vnet_00 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_00
$vnet_00 | Set-AzVirtualNetwork
$subnet_vnet_01 = @{
Name = 'default'
VirtualNetwork = $vnet_01
AddressPrefix = '10.1.0.0/24'
}
$subnetConfig_vnet_01 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_01
$vnet_01 | Set-AzVirtualNetwork
$subnet_vnet_02 = @{
Name = 'default'
VirtualNetwork = $vnet_02
AddressPrefix = '10.2.0.0/24'
}
$subnetConfig_vnet_02 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_02
$vnet_02 | Set-AzVirtualNetwork
ネットワーク グループを作成する
Virtual Network Manager では、ネットワーク グループに仮想ネットワークを配置して、仮想ネットワークのグループに構成を適用します。 New-AzNetworkManagerGroup を使用してネットワーク グループを作成します。 この例では、"(米国) 米国西部 2" リージョンに network-group というネットワーク グループを作成します。
$ng = @{
Name = 'network-group'
ResourceGroupName = $rg.Name
NetworkManagerName = $networkManager.Name
}
$ng = New-AzNetworkManagerGroup @ng
メッシュ構成のメンバーシップを定義する
このタスクでは、New-AzNetworkManagerStaticMember を使用して、静的メンバーの vnet-00 と vnet-01 をネットワーク グループ 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_vnet_00 = @{
Name = Get-UniqueString $vnet_00.Id
ResourceGroupName = $rg.Name
NetworkGroupName = $ng.Name
NetworkManagerName = $networkManager.Name
ResourceId = $vnet_00.Id
}
$sm_vnet_00 = New-AzNetworkManagerStaticMember @sm_vnet_00
$sm_vnet_01 = @{
Name = Get-UniqueString $vnet_01.Id
ResourceGroupName = $rg.Name
NetworkGroupName = $ng.Name
NetworkManagerName = $networkManager.Name
ResourceId = $vnet_01.Id
}
$sm_vnet_01 = New-AzNetworkManagerStaticMember @sm_vnet_01
接続構成を作成する
このタスクでは、New-AzNetworkManagerConnectivityConfiguration と New-AzNetworkManagerConnectivityGroupItem を使用して、ネットワーク グループ network-group での接続構成を作成します。
接続グループ項目を作成します。
$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.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("westus2")
$deployment = @{
Name = $networkManager.Name
ResourceGroupName = $rg.Name
ConfigurationId = $configIds
TargetLocation = $target
CommitType = 'Connectivity'
}
Deploy-AzNetworkManagerCommit @deployment
リソースをクリーンアップする
Azure Virtual Network Manager インスタンスとそのリソースが不要になった場合は、次の手順に従って、リソースを含むリソース グループを削除することで削除します。
Remove-AzResourceGroup を使用して、リソース グループを削除します。
Remove-AzResourceGroup -Name $rg.Name -Force
次のステップ
この手順では、セキュリティ管理者の構成を使用してネットワーク トラフィックをブロックする方法について説明します。