クイックスタート: 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 を使用してリソース グループを作成します。 次の例では、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-001、vnet-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 を使用して、サブネット アドレス プレフィックスが /24 の default という名前のサブネット構成を作成します。 その後、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-001 と vnet-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-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.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 インスタンスとその関連リソースが不要になったら、それらを含むリソース グループを削除します。 リソース グループを削除すると、作成したリソースも削除されます。
Remove-AzResourceGroup を使用して、リソース グループを削除します。
Remove-AzResourceGroup -Name $rg.ResourceGroupName -Force
次のステップ
Azure Virtual Network Manager インスタンスを作成したら、セキュリティ管理者の構成を使用してネットワーク トラフィックをブロックする方法について確認します。