クイックスタート: ARM テンプレートを使用した Azure パブリック MEC への仮想マシンのデプロイ
このクイックスタートでは、Azure Resource Manager (ARM) テンプレートを使用して、Azure パブリック マルチアクセス エッジ コンピューティング (MEC) に Ubuntu Linux 仮想マシン (VM) をデプロイする方法について説明します。
Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイを作成するための一連のプログラミング コマンドを記述しなくても、意図したデプロイを記述できます。
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
許可リストに登録されているサブスクリプションを Azure アカウントに追加します。これにより、Azure パブリック MEC にリソースをデプロイできます。 許可されたアクティブなサブスクリプションがない場合、Azure パブリック MEC 製品チームにお問い合わせください。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
Note
Azure パブリック MEC デプロイは Azure CLI バージョン 2.26 以降でサポートされています。
テンプレートを確認する
次の ARM テンプレートの例を確認します。
Azure パブリック MEC にデプロイするリソースには、
extendedLocation
という名前の追加の属性があります。これは、Azure によってリソース プロバイダーに追加されます。 ARM テンプレートの例では、次のリソースがデプロイされます。- 仮想ネットワーク
- パブリック IP アドレス
- ネットワーク インターフェイス
- ネットワーク セキュリティ グループ
- 仮想マシン
この ARM テンプレートの例では次のとおりです。
- この Azure Edge Zone ID は、Azure パブリック MEC の表示名とは異なります。
- Azure ネットワーク セキュリティ グループには、どこからでも SSH および HTTPS アクセスを許可する受信規則があります。
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "adminUsername": { "type": "String", "metadata": { "description": "Username for the Virtual Machine." } }, "adminPassword": { "type": "SecureString", "metadata": { "description": "Password for the Virtual Machine." } }, "dnsLabelPrefix": { "type": "String", "metadata": { "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." } }, "vmSize": { "defaultValue": "Standard_D2s_v3", "type": "String", "metadata": { "description": "Size of the virtual machine." } }, "location": { "defaultValue": "[resourceGroup().location]", "type": "String", "metadata": { "description": "Location for all resources." } }, "EdgeZone": { "type": "String" }, "publisher": { "type": "string", "defaultValue": "Canonical", "metadata" : { "description": "Publisher for the VM Image" } }, "offer": { "type": "string", "defaultValue": "UbuntuServer", "metadata" : { "description": "Offer for the VM Image" } }, "sku": { "type": "string", "defaultValue": "18.04-LTS", "metadata" : { "description": "SKU for the VM Image" } }, "osVersion": { "type": "string", "defaultValue": "latest", "metadata" : { "description": "version for the VM Image" } }, "vmName": { "defaultValue": "myEdgeVM", "type": "String", "metadata": { "description": "VM Name." } } }, "variables": { "nicName": "myEdgeVMNic", "addressPrefix": "10.0.0.0/16", "subnetName": "Subnet", "subnetPrefix": "10.0.0.0/24", "publicIPAddressName": "myEdgePublicIP", "virtualNetworkName": "MyEdgeVNET", "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]", "networkSecurityGroupName": "default-NSG" }, "resources": [ { "type": "Microsoft.Network/publicIPAddresses", "apiVersion": "2018-11-01", "name": "[variables('publicIPAddressName')]", "location": "[parameters('location')]", "extendedLocation": { "type": "EdgeZone", "name": "[parameters('EdgeZone')]" }, "sku": { "name": "Standard" }, "properties": { "publicIPAllocationMethod": "Static", "dnsSettings": { "domainNameLabel": "[parameters('dnsLabelPrefix')]" } } }, { "type": "Microsoft.Network/networkSecurityGroups", "apiVersion": "2019-08-01", "name": "[variables('networkSecurityGroupName')]", "location": "[parameters('location')]", "properties": { "securityRules": [ { "name": "AllowHttps", "properties": { "description": "HTTPS is allowed", "protocol": "*", "sourcePortRange": "*", "destinationPortRange": "443", "sourceAddressPrefix": "*", "destinationAddressPrefix": "*", "access": "Allow", "priority": 130, "direction": "Inbound", "sourcePortRanges": [], "destinationPortRanges": [], "sourceAddressPrefixes": [], "destinationAddressPrefixes": [] } }, { "name": "AllowSSH", "properties": { "description": "HTTPS is allowed", "protocol": "*", "sourcePortRange": "*", "destinationPortRange": "22", "sourceAddressPrefix": "*", "destinationAddressPrefix": "*", "access": "Allow", "priority": 140, "direction": "Inbound", "sourcePortRanges": [], "destinationPortRanges": [], "sourceAddressPrefixes": [], "destinationAddressPrefixes": [] } } ] } }, { "type": "Microsoft.Network/virtualNetworks", "apiVersion": "2018-11-01", "name": "[variables('virtualNetworkName')]", "location": "[parameters('location')]", "extendedLocation": { "type": "EdgeZone", "name": "[parameters('EdgeZone')]" }, "dependsOn": [ "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" ], "properties": { "addressSpace": { "addressPrefixes": [ "[variables('addressPrefix')]" ] }, "subnets": [ { "name": "[variables('subnetName')]", "properties": { "addressPrefix": "[variables('subnetPrefix')]", "networkSecurityGroup": { "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" } } } ] } }, { "type": "Microsoft.Network/networkInterfaces", "apiVersion": "2018-11-01", "name": "[variables('nicName')]", "location": "[parameters('location')]", "extendedLocation": { "type": "EdgeZone", "name": "[parameters('EdgeZone')]" }, "dependsOn": [ "[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" ], "properties": { "ipConfigurations": [ { "name": "ipconfig1", "properties": { "privateIPAllocationMethod": "Dynamic", "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" }, "subnet": { "id": "[variables('subnetRef')]" } } } ] } }, { "type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "extendedLocation": { "type": "EdgeZone", "name": "[parameters('EdgeZone')]" }, "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" ], "properties": { "hardwareProfile": { "vmSize": "[parameters('vmSize')]" }, "osProfile": { "computerName": "[parameters('vmName')]", "adminUsername": "[parameters('adminUsername')]", "adminPassword": "[parameters('adminPassword')]" }, "storageProfile": { "imageReference": { "publisher": "[parameters('publisher')]", "offer": "[parameters('offer')]", "sku": "[parameters('sku')]", "version": "[parameters('osVersion')]" }, "osDisk": { "createOption": "FromImage", "managedDisk": { "storageAccountType": "StandardSSD_LRS" } } }, "networkProfile": { "networkInterfaces": [ { "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" } ] } } } ], "outputs": { "hostname": { "type": "String", "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" }, "sshCommand": { "type": "string", "value": "[format('ssh {0}@{1}', parameters('adminUsername'), reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn)]" } } }
Azure CLI を使用して ARM テンプレートをデプロイする
前のセクションのサンプル ARM テンプレートの内容を、azurepublicmecDeploy.json という名前のファイルに保存します。
az login を使用して Azure にサインインし、az account set コマンドを使用して Azure サブスクリプションを設定します。
az login az account set --subscription <subscription name>
az group create コマンドで Azure リソース グループを作成します。 リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 次の例では、myResourceGroup という名前のリソース グループを作成します。
az group create --name myResourceGroup --location <location>
Note
各 Azure パブリック MEC サイトは、Azure リージョンに関連付けられています。 リソースをデプロイする必要がある Azure パブリック MEC の場所に基づいて、
--location
パラメーターに適したリージョン値を選択してください。 詳細については、Azure パブリック MEC の主要概念に関する記事を参照してください。az deployment group create コマンドを使用して、リソース グループに ARM テンプレートをデプロイします。
az deployment group create --resource-group myResourceGroup --template-file azurepublicmecDeploy.json
Please provide string value for 'adminUsername' (? for help): <username> Please provide securestring value for 'adminPassword' (? for help): <password> Please provide string value for 'dnsLabelPrefix' (? for help): <uniqueDnsLabel> Please provide string value for 'EdgeZone' (? for help): <edge zone ID>
デプロイが完了するには数分かかります。
コマンドの実行が完了すると、myResourceGroup リソース グループに新しいリソースが表示されます。 出力例を次に示します。
{ "id": "/subscriptions/xxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Resources/deployments/edgeZonesDeploy", "location": null, "name": "edgeZonesDeploy", "properties": { "correlationId": "<xxxxxxxx>", "debugSetting": null, "dependencies": [ { "dependsOn": [ { "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup /providers/Microsoft.Network/networkSecurityGroups/default-NSG", "resourceGroup": " myResourceGroup ", "resourceName": "default-NSG", "resourceType": "Microsoft.Network/networkSecurityGroups" } ], "id": "/subscriptions/xxxxxx/resourceGroups/ myResourceGroup /providers/Microsoft.Network/virtualNetworks/MyEdgeTestVnet", "resourceGroup": " myResourceGroup ", "resourceName": " MyEdgeTestVnet ", "resourceType": "Microsoft.Network/virtualNetworks" }, "outputs": { "hostname": { "type": "String", "value": "xxxxx.cloudapp.azure.com" }, "sshCommand": { "type": "String", "value": "ssh <adminUsername>@<publicIPFQDN>" } }, ... }
仮想マシンにアクセスする
SSH を使用して Azure パブリック MEC 内の仮想マシンに接続するには、Azure 親リージョンにジャンプ ボックスをデプロイする方法が最適です。
リージョンでの仮想マシンの作成に関するページの手順に従います。
SSH を使用して、リージョンにデプロイされたジャンプ ボックス仮想マシンに接続します。
ssh <username>@<regionVM_publicIP>
ジャンプ ボックスから SSH を使用して、Azure パブリック MEC で作成された仮想マシンに接続します。
ssh <username>@<edgezoneVM_publicIP>
リソースをクリーンアップする
このクイックスタートでは、Azure CLI を使用して、Azure パブリック MEC に ARM テンプレートをデプロイしました。 今後これらのリソースが必要ない場合は、az group delete コマンドを使用して、リソース グループ、スケール セット、関連するすべてのリソースを削除してください。 --yes
パラメーターを使用すると、確認プロンプトなしでリソースが削除されます。
az group delete \--name myResourceGroup \--yes
次のステップ
Azure CLI を使用して Azure パブリック MEC に仮想マシンをデプロイする方法については、次の記事を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示