クイック スタート: ARM テンプレートを使用してプライベート リンク サービスを作成する
- [アーティクル]
-
-
このクイックスタートでは、Azure Resource Manager テンプレート (ARM テンプレート) を使用してプライベート リンク サービスを作成します。
Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。
このクイックスタートは、Azure portal、Azure PowerShell、または Azure CLI を使用して完了することもできます。
環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 テンプレートが Azure portal で開きます。
アクティブなサブスクリプションを含む Azure アカウントが必要です。 無料でアカウントを作成できます。
このテンプレートは、プライベート リンク サービスを作成します。
このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "4187161334981532249"
}
},
"parameters": {
"vmAdminUsername": {
"type": "string",
"metadata": {
"description": "Username for the Virtual Machine."
}
},
"vmAdminPassword": {
"type": "secureString",
"metadata": {
"description": "Password for the Virtual Machine. The password must be at least 12 characters long and have lower case, upper characters, digit and a special character (Regex match)"
}
},
"vmSize": {
"type": "string",
"defaultValue": "Standard_D2_v3",
"metadata": {
"description": "The size of the VM"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"vnetName": "myVirtualNetwork",
"vnetConsumerName": "myPEVnet",
"vnetAddressPrefix": "10.0.0.0/16",
"frontendSubnetPrefix": "10.0.1.0/24",
"frontendSubnetName": "frontendSubnet",
"backendSubnetPrefix": "10.0.2.0/24",
"backendSubnetName": "backendSubnet",
"consumerSubnetPrefix": "10.0.0.0/24",
"consumerSubnetName": "myPESubnet",
"loadbalancerName": "myILB",
"backendPoolName": "myBackEndPool",
"loadBalancerFrontEndIpConfigurationName": "myFrontEnd",
"healthProbeName": "myHealthProbe",
"privateEndpointName": "myPrivateEndpoint",
"vmName": "[take(format('myVm{0}', uniqueString(resourceGroup().id)), 15)]",
"networkInterfaceName": "[format('{0}NetInt', variables('vmName'))]",
"vmConsumerName": "[take(format('myConsumerVm{0}', uniqueString(resourceGroup().id)), 15)]",
"publicIpAddressConsumerName": "[format('{0}PublicIP', variables('vmConsumerName'))]",
"networkInterfaceConsumerName": "[format('{0}NetInt', variables('vmConsumerName'))]",
"osDiskType": "StandardSSD_LRS",
"privatelinkServiceName": "myPLS",
"loadbalancerId": "[resourceId('Microsoft.Network/loadBalancers', variables('loadbalancerName'))]"
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-05-01",
"name": "[variables('vnetName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('vnetAddressPrefix')]"
]
},
"subnets": [
{
"name": "[variables('frontendSubnetName')]",
"properties": {
"addressPrefix": "[variables('frontendSubnetPrefix')]",
"privateLinkServiceNetworkPolicies": "Disabled"
}
},
{
"name": "[variables('backendSubnetName')]",
"properties": {
"addressPrefix": "[variables('backendSubnetPrefix')]"
}
}
]
}
},
{
"type": "Microsoft.Network/loadBalancers",
"apiVersion": "2021-05-01",
"name": "[variables('loadbalancerName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {
"frontendIPConfigurations": [
{
"name": "[variables('loadBalancerFrontEndIpConfigurationName')]",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('frontendSubnetName'))]"
}
}
}
],
"backendAddressPools": [
{
"name": "[variables('backendPoolName')]"
}
],
"inboundNatRules": [
{
"name": "RDP-VM0",
"properties": {
"frontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadbalancerName'), variables('loadBalancerFrontEndIpConfigurationName'))]"
},
"protocol": "Tcp",
"frontendPort": 3389,
"backendPort": 3389,
"enableFloatingIP": false
}
}
],
"loadBalancingRules": [
{
"name": "myHTTPRule",
"properties": {
"frontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadbalancerName'), variables('loadBalancerFrontEndIpConfigurationName'))]"
},
"backendAddressPool": {
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadbalancerName'), variables('backendPoolName'))]"
},
"probe": {
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadbalancerName'), variables('healthProbeName'))]"
},
"protocol": "Tcp",
"frontendPort": 80,
"backendPort": 80,
"idleTimeoutInMinutes": 15
}
}
],
"probes": [
{
"properties": {
"protocol": "Tcp",
"port": 80,
"intervalInSeconds": 15,
"numberOfProbes": 2
},
"name": "[variables('healthProbeName')]"
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
]
},
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2021-05-01",
"name": "[variables('networkInterfaceName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('networkInterfaceName')]"
},
"properties": {
"ipConfigurations": [
{
"name": "ipConfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('backendSubnetName'))]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadbalancerName'), variables('backendPoolName'))]"
}
],
"loadBalancerInboundNatRules": [
{
"id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatRules/', variables('loadbalancerName'), 'RDP-VM0')]"
}
]
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/loadBalancers', variables('loadbalancerName'))]"
]
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-11-01",
"name": "[variables('vmName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('vmName')]"
},
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[variables('vmName')]",
"adminUsername": "[parameters('vmAdminUsername')]",
"adminPassword": "[parameters('vmAdminPassword')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2019-Datacenter",
"version": "latest"
},
"osDisk": {
"name": "[format('{0}OsDisk', variables('vmName'))]",
"caching": "ReadWrite",
"createOption": "FromImage",
"managedDisk": {
"storageAccountType": "[variables('osDiskType')]"
},
"diskSizeGB": 128
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
]
},
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2021-11-01",
"name": "[format('{0}/{1}', variables('vmName'), 'installcustomscript')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "install software for Windows VM"
},
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.9",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"commandToExecute": "powershell -ExecutionPolicy Unrestricted Install-WindowsFeature -Name Web-Server"
}
},
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]"
]
},
{
"type": "Microsoft.Network/privateLinkServices",
"apiVersion": "2021-05-01",
"name": "[variables('privatelinkServiceName')]",
"location": "[parameters('location')]",
"properties": {
"enableProxyProtocol": false,
"loadBalancerFrontendIpConfigurations": [
{
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadbalancerName'), variables('loadBalancerFrontEndIpConfigurationName'))]"
}
],
"ipConfigurations": [
{
"name": "snet-provider-default-1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"privateIPAddressVersion": "IPv4",
"subnet": {
"id": "[reference(variables('loadbalancerId'), '2019-06-01').frontendIPConfigurations[0].properties.subnet.id]"
},
"primary": false
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/loadBalancers', variables('loadbalancerName'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-05-01",
"name": "[variables('vnetConsumerName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('vnetAddressPrefix')]"
]
},
"subnets": [
{
"name": "[variables('consumerSubnetName')]",
"properties": {
"addressPrefix": "[variables('consumerSubnetPrefix')]",
"privateEndpointNetworkPolicies": "Disabled"
}
},
{
"name": "[variables('backendSubnetName')]",
"properties": {
"addressPrefix": "[variables('backendSubnetPrefix')]"
}
}
]
}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2021-05-01",
"name": "[variables('publicIpAddressConsumerName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('publicIpAddressConsumerName')]"
},
"properties": {
"publicIPAllocationMethod": "Dynamic",
"dnsSettings": {
"domainNameLabel": "[toLower(variables('vmConsumerName'))]"
}
}
},
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2021-05-01",
"name": "[variables('networkInterfaceConsumerName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('networkInterfaceConsumerName')]"
},
"properties": {
"ipConfigurations": [
{
"name": "ipConfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressConsumerName'))]"
},
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetConsumerName'), variables('consumerSubnetName'))]"
}
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressConsumerName'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetConsumerName'))]"
]
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-11-01",
"name": "[variables('vmConsumerName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('vmConsumerName')]"
},
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[variables('vmConsumerName')]",
"adminUsername": "[parameters('vmAdminUsername')]",
"adminPassword": "[parameters('vmAdminPassword')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2019-Datacenter",
"version": "latest"
},
"osDisk": {
"name": "[format('{0}OsDisk', variables('vmConsumerName'))]",
"caching": "ReadWrite",
"createOption": "FromImage",
"managedDisk": {
"storageAccountType": "[variables('osDiskType')]"
},
"diskSizeGB": 128
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceConsumerName'))]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceConsumerName'))]"
]
},
{
"type": "Microsoft.Network/privateEndpoints",
"apiVersion": "2021-05-01",
"name": "[variables('privateEndpointName')]",
"location": "[parameters('location')]",
"properties": {
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetConsumerName'), variables('consumerSubnetName'))]"
},
"privateLinkServiceConnections": [
{
"name": "[variables('privateEndpointName')]",
"properties": {
"privateLinkServiceId": "[resourceId('Microsoft.Network/privateLinkServices', variables('privatelinkServiceName'))]"
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/privateLinkServices', variables('privatelinkServiceName'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetConsumerName'))]"
]
}
]
}
このテンプレートには、次の複数の Azure リソースが定義されています。
ARM テンプレートを Azure にデプロイする方法を次に示します。
Azure にサインインしてテンプレートを開くために、 [Azure に配置する] を選択します。 テンプレートは、仮想マシン、標準ロード バランサー、プライベート リンク サービス、プライベート エンドポイント、ネットワーク、および検証する仮想マシンを作成します。
リソース グループを選択または作成します。
仮想マシン管理者のユーザー名とパスワードを入力します。
[Review + create](レビュー + 作成) を選択します。
[作成] を選択します
デプロイが完了するまでに数分かかる場合があります。
注意
ARM テンプレートにより、仮想マシン myConsumerVm{uniqueid} リソースの一意の名前が生成されます。 {uniqueid} は、実際に生成された値に置き換えてください。
次のように、インターネットから VM myConsumerVm{uniqueid} に接続します。
ポータルの検索バーに、「myConsumerVm{uniqueid} 」と入力します。
[接続] を選択します。 [仮想マシンに接続する] が開きます。
[RDP ファイルのダウンロード] を選択します。 リモート デスクトップ プロトコル ( .rdp) ファイルが作成され、お使いのコンピューターにダウンロードされます。
コンピューターにダウンロードした RDP ファイルを開きます。
a. メッセージが表示されたら、 [Connect] を選択します。
b. VM の作成時に指定したユーザー名とパスワードを入力します。
注意
場合によっては、 [その他]>[別のアカウントを使用する] の順に選択して、VM の作成時に入力した資格情報を指定する必要があります。
[OK] を選択します。
サインイン処理中に証明書の警告が表示される場合があります。 証明書の警告を受信する場合は、 [はい] または [続行] を選択します。
VM デスクトップが表示されたら最小化してローカル デスクトップに戻ります。
VM から HTTP サービスにプライベートにアクセスする
プライベート エンドポイントを使用して VM から HTTP サービスに接続する方法を次に示します。
myConsumerVm{uniqueid} のリモート デスクトップに移動します。
ブラウザーを開いて、プライベート エンドポイント アドレス http://10.0.0.5/
を入力します。
既定の IIS ページが表示されます。
プライベート リンク サービスと共に作成したリソースが不要になった場合は、リソース グループを削除します。 この操作により、プライベート リンク サービスとすべての関連リソースが削除されます。
リソース グループを削除するには、Remove-AzResourceGroup
コマンドレットを呼び出します。
Remove-AzResourceGroup -Name <your resource group name>
プライベート エンドポイントをサポートするサービスの詳細については、以下を参照してください。