演習 - ARM テンプレートをデプロイする
Note
初めてサンドボックスをアクティブ化して利用規約に同意すると、Microsoft アカウントが Microsoft Learn サンドボックスという名前の新しい Azure ディレクトリに関連付けられます。 あなたはコンシェルジェ サブスクリプションという名前の特殊なサブスクリプションに追加されます。
ここでは、URI を指定して、コンピューターおよび GitHub リポジトリから Azure Resource Manager (ARM) テンプレートをデプロイします。
重要
この演習では、Visual Studio Code 用 Azure Resource Manager ツールを使用します。 この拡張機能を必ず Visual Studio Code にインストールしてください。
Microsoft Learn Sandbox サブスクリプションを使用して環境を設定する
このユニットで各デプロイを実行するには、Visual Studio Code ターミナルから Azure アカウントにサインインする必要があります。
サンドボックスをアクティブ化したのと同じアカウントにサインインしていることを確認してください。
Azure にサインインする
Visual Studio Code のターミナルから次のコマンドを実行して、Azure にサインインします。 このコマンドを実行すると、ブラウザーが開き、アカウントにサインインできます。
Connect-AzAccount
サインインすると、このアカウントに関連付けられているサブスクリプションの一覧がターミナルに表示されます。 サンドボックスをアクティブにしている場合、このリストにコンシェルジェ サブスクリプションが含まれています。
サブスクリプション名を確認してください。 次のコマンドを実行すると、ご利用のサブスクリプション、名前、その ID が、読みやすい表形式で一覧表示されます。
Concierge Subscription
を参照してください。Get-AzSubscription
アクティブなサブスクリプションをコンシェルジェ サブスクリプションに変更します。
$context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
既定のリソース グループを設定する
次に、サンドボックスで自分用に作成したリソース グループを、既定のリソース グループとして設定する必要があります。 この操作を実行するには、最初に、次のコマンドを実行してリソース グループを取得する必要があります。
Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault
このコマンドでは、前のコマンドから取得したリソースの名前を使用します (これは、learn-a73131a1-b618-48b8-af70-21af7ca420c4
のように表示されます)。このコマンドを使用すると、この演習の残りの Azure PowerShell コマンドでそのパラメーターを省略できます。
Note
通常、PowerShell または Azure CLI コマンドを実行してテンプレートをデプロイする場合、ターゲットのリソース グループ名を指定する必要があります。 前のコマンドを実行し、デプロイのコンテキストを設定しています。 PowerShell コマンド Set-AzDefault を実行してサンドボックスのリソース グループ名を指定しています。
Set-AzDefault -ResourceGroupName {Resource Group Name}
ローカル テンプレートをデプロイする
次の演習では、ローカル コンピューターからテンプレートをデプロイします。 前のセクションで既定のリソース グループを既に定義したので、独自の環境でデプロイする場合に通常使用するリソース グループの名前は、ここでは必要ありません。
作業を開始するには、次のテンプレート コードの内容をコピーして、ローカル ディレクトリ内のファイルに貼り付けます。 たとえば、
C:\JSON\maintemplate.json
を使用します。{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
そのファイルをローカルに保存した後、PowerShell コマンドを使用して、前のユニットで説明したリソース グループ レベルでそれをデプロイできます。 つまり、New-AzResourceGroupDeployment コマンドを使用します。
$templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
完了したら、結果は次の例のようになります。
DeploymentName : DeployLocalTemplate-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:50:04 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
パラメーター値を使用して同じローカル テンプレートをデプロイする
前の演習では、パラメーターの既定値を使用してテンプレートをデプロイしました。 ローカルの ARM テンプレートをデプロイする場合は、パラメーター値を渡すことが必要になる可能性があります。 インライン パラメーターまたはパラメーター ファイルのいずれかを使用できます。
インライン パラメーターをデプロイに渡すには、New-AzResourceGroupDeployment
コマンドレットを使用してパラメーターの名前を指定する必要があります。 次の演習では、パラメーターをインライン パラメーターおよびパラメーター ファイルとして渡します。
前の演習と同じテンプレートを使用して、必要なテンプレート パラメーターの値を含むハッシュ テーブルを作成します。
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-2-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterObject $parameters
完了したら、結果は次のようになります。
DeploymentName : DeployLocalTemplate-2-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:51:55 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
スクリプトでパラメーターをインラインとして渡すのではなく、パラメーター値を含む JSON ファイルを使用する方が簡単な場合があります。 パラメーター ファイルは、ローカル ファイルでも、アクセス可能な URI を持つ外部またはリモート ファイルでもかまいません。 パラメーター ファイルの詳細については、「Resource Manager パラメーター ファイルを作成する」を参照してください。
ローカル パラメーター ファイルを渡すには、使用していた同じコマンドで
TemplateParameterFile
パラメーターを使用します。 ただし、最初に、パラメーター ファイルを作成して保存する必要があります。Visual Studio Code と Azure Resource Manager ツール拡張機能を使用しているため、ローカルで保存した ARM テンプレートを開き、[パラメーター ファイルの選択/作成...] リンクを選択できます。
メニューで [新規] を選択し、[必須パラメーターのみ] を選択します。 拡張機能により、現在開いているテンプレートに基づいてパラメーター ファイルが作成されます。
TemplateParameterFile
パラメーターを含む次の PowerShell コマンドを使用します。$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $TemplateParameterFile= "C:\JSON\maintemplate.parameters.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-3-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterFile $TemplateParameterFile
デプロイ後、結果は次の例のようになります。
DeploymentName : DeployLocalTemplate-3-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:54:40 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
外部またはリモートのテンプレートをデプロイする
場合によっては、ローカル コンピューターのテンプレートからではなく、外部またはリモートの場所からデプロイする必要があります。 ソース管理リポジトリ (GitHub など) にテンプレートを格納できます。 または、組織内の共有アクセス用の Azure ストレージ アカウントに格納することができます。
外部テンプレートをデプロイするには、
TemplateUri
パラメーターを使用します。次の演習では、GitHub リポジトリから ARM テンプレートをデプロイします。 リポジトリはパブリックであるため、Shared Access Signature (SAS) トークンを必要とするテンプレートのデプロイについて心配する必要はありません。 プライベートまたはセキュリティで保護されたリモートの場所を使用する方法の詳細については、SAS トークンを使用したプライベート テンプレートのデプロイに関するページを参照してください。
演習用のテンプレート URI は、https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json です。 これは、サンドボックス環境に基本的なストレージ アカウントをデプロイする短いテンプレートです。
PowerShell コマンドは、ローカル テンプレートの場合とまったく同じです。 唯一の違いは、
-TemplateUri
パラメーターの代わりに-TemplateFile
パラメーターを使用する点です。次のコードを使用して、指定されたサンドボックスにデプロイします。
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-4-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
結果は、次の画面キャプチャのようになります。 テンプレートの場所の詳細も説明されています。
DeploymentName : DeployLocalTemplate-4-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:56:55 p.m. Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ==================== ========================= ========== storageAccountType String Standard_LRS location String westus Outputs : Name Type Value ==================== ========================= ========== storageAccountName String storepgxosadmbq77e DeploymentDebugLogLevel :
Note
このセクションは、Windows 10 上の Linux 用 Windows Subsystem (WSL2) で Azure CLI コマンドを使用して作成されました。 Azure CLI を PowerShell、CMD、または Bash シェルのいずれで使用するかにかかわらず、コマンドは同じです。 しかし、変数のアドレス指定方法は異なる場合があります。
Azure にサインインする
Visual Studio Code のターミナルから次のコマンドを実行して、Azure にサインインします。 このコマンドを実行すると、ブラウザーが開き、アカウントにサインインできます。
az login
サインインすると、このアカウントに関連付けられているサブスクリプションの JSON リストがターミナルに表示されます。 サンドボックスをアクティブにしている場合、このリストにコンシェルジェ サブスクリプションが含まれています。
サブスクリプション ID を取得します。 次のコマンドを実行すると、ご使用のサブスクリプションとその ID が一覧表示されます。 サブスクリプション ID は 3 番目の列です。
Concierge Subscription
を探し、3 番目の列をコピーします。 それはaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
のようになります。az account list -o table
アクティブなサブスクリプションをコンシェルジェ サブスクリプションに変更します。 必ず、
{Your subscription ID}
を、前のコマンドで取得したコンシェルジェ サブスクリプションの ID に置き換えてください。az account set -s {Your subscription ID}
既定のリソース グループを設定する
次に、サンドボックスで自分用に作成したリソース グループを、既定のリソース グループとして設定する必要があります。 この操作を実行するには、最初に、次のコマンドを使用してリソース グループを取得する必要があります。
az group list -o table
このコマンドでは、前のコマンドから取得したリソースの名前を使用します (これは、learn-a73131a1-b618-48b8-af70-21af7ca420c4
のように表示されます)。このコマンドを使用することにより、この演習の残りの Azure CLI コマンドでそのパラメーターを省略できます。
Note
通常、Azure CLI コマンドを使用してテンプレートをデプロイするときは、ターゲットの "リソース グループ" 名を指定する必要があります。 このモジュールの演習では、デプロイのコンテキストを設定すると、この要件をバイパスしています。 次の手順では、Azure CLI コマンド az configure を使用してサンドボックスのリソース グループ名を指定しています。
az configure --defaults group={Resource Group Name}
ローカル テンプレートをデプロイする
次の演習では、ローカル コンピューターからテンプレートをデプロイします。 前のセクションで既定のリソース グループを既に定義したので、独自の環境でデプロイする場合に通常使用するリソース グループの名前は、ここでは必要ありません。
作業を開始するには、次のテンプレート コードの内容をコピーして、ローカル ディレクトリ内のファイルに貼り付けます。 たとえば、
C:\JSON\maintemplate.json
または/mnt/c/Users/you/json/maintemplate.json
を使用します。{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
ファイルをローカルに保存した後、Azure CLI コマンドを使用して、前のユニットで説明したリソース グループ レベルでそれをデプロイできます。 つまり、az deployment group create を使用します。
Note
次の例のテンプレート ファイルは、Linux 用 Windows Subsystem (WSL2) のホーム ドライブの json フォルダー内にあります。 選択したシェルに基づいてコマンドを調整します。
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile
完了すると、次の例のような結果が出力されます。 デプロイが成功したことを確実にするには、
"provisioningState": "Succeeded"
行を探します。{ "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19", "location": null, "name": "DeployLocalTemplate-2020-08-19", "properties": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "debugSetting": null, "dependencies": [], "duration": "PT8.9060761S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T14:47:06.403362+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
パラメーター値を使用して同じローカル テンプレートをデプロイする
前の演習では、パラメーターの既定値を使用してテンプレートをデプロイしました。 ローカルの ARM テンプレートをデプロイする場合は、パラメーター値を渡すことが必要になる可能性があります。 インライン パラメーターまたはパラメーター ファイルのいずれかを使用できます。
次の演習では、インライン パラメーターをデプロイに渡します。 az deployment group create
コマンドを使用して、インライン パラメーターとパラメーター ファイルのどちらを使用しているかに関係なく、パラメーターの名前を指定する必要があります。
前の演習と同じテンプレートを使用して、必要なテンプレート パラメーターのパラメーターを JSON 文字列形式で格納する変数を作成します。
Note
次の例のテンプレート ファイルは、Linux 用 Windows Subsystem (WSL2) の json フォルダー内にあります。 選択したシェルおよび OS に基づいてコマンドを調整します。
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-2-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters "$parameters"
完了したら、結果は次の例のようになります。 コマンドが正常に実行されたことを確認するには、
"parameters"
セクションと"provisioningState"
値を参照してください。{- Finished .. "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19", "location": null, "name": "DeployLocalTemplate-2-2020-08-19", "properties": { "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "debugSetting": null, "dependencies": [], "duration": "PT4.6990388S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T16:40:20.249786+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
スクリプトでパラメーターをインラインとして渡すのではなく、パラメーター値を含む JSON ファイルを使用する方が簡単な場合があります。 パラメーター ファイルは、ローカル ファイルでも、アクセス可能な URI を持つ外部またはリモート ファイルでもかまいません。 パラメーター ファイルの詳細については、「Resource Manager パラメーター ファイルを作成する」を参照してください。
ローカル パラメーター ファイルを渡すには、使用していた同じコマンドで
--parameters
パラメーターを使用します。 ただし、最初に、パラメーター ファイルを作成して保存する必要があります。Visual Studio Code と Azure Resource Manager (ARM) ツール拡張機能を使用しているため、ローカルで保存した ARM テンプレートを開き、Select or create a parameter file to enable full validation (完全な検証を有効にするためにパラメーター ファイルを選択または作成する) リンクを選択できます。
メニューで [新規] をクリックします。 拡張機能により、現在開いているテンプレートに基づいてパラメーター ファイルが作成されます。
--parameters
パラメーターを含む次の Azure CLI コマンドを使用します。Note
次の例のテンプレート ファイルは、Linux 用 Windows Subsystem (WSL2) の json フォルダー内にあります。 選択したシェルおよび OS に基づいてコマンドを調整します。
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json templateparameterfile=/mnt/c/Users/<UserName>/json/maintemplate.parameters.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-3-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters $templateparameterfile
デプロイ後、結果は次の例のようになります。
{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff", "debugSetting": null, "dependencies": [], "duration": "PT4.2058912S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T20:42:44.069215+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }
外部またはリモートのテンプレートをデプロイする
場合によっては、ローカル コンピューターのテンプレートからではなく、外部またはリモートの場所からデプロイする必要があります。 ソース管理リポジトリ (GitHub など) にテンプレートを格納できます。 または、組織内の共有アクセス用の Azure ストレージ アカウントに格納することができます。
- 外部テンプレートをデプロイするには、
--template-uri
パラメーターを使用します。
この演習では、GitHub リポジトリから ARM テンプレートをデプロイします。 リポジトリはパブリックであるため、Shared Access Signature (SAS) トークンを必要とするテンプレートのデプロイについて心配する必要はありません。 プライベートまたはセキュリティで保護されたリモートの場所を使用する方法の詳細については、SAS トークンを使用したプライベート テンプレートのデプロイに関するページを参照してください。
演習用のテンプレート URI は、https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json です。 これは、サンドボックス環境に基本的なストレージ アカウントをデプロイする短いテンプレートです。
Azure CLI コマンドは、ローカル テンプレートの場合とまったく同じです。 唯一の違いは、
--template-uri
パラメーターの代わりに--template-file
パラメーターを使用する点です。次のコードを使用して、指定されたサンドボックスにデプロイします。
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-4-"$today az deployment group create \ --name $deploymentname \ --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
結果は、次のコード ブロックのようになります。
"templateLink"
セクションでは、テンプレートの場所の詳細が説明されています。 また、"provisioningState"
セクションでは、デプロイが成功したかどうかが示されています。{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19", "location": null, "name": "DeployLocalTemplate-4-2020-08-19", "properties": { "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa", "debugSetting": null, "dependencies": [], "duration": "PT24.3286124S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": { "storageAccountName": { "type": "String", "value": "store7zk7eyqew54l4" } }, "parameters": { "location": { "type": "String", "value": "westus" }, "storageAccountType": { "type": "String", "value": "Standard_LRS" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Storage", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "storageAccounts" } ] } ], "provisioningState": "Succeeded", "templateHash": "12600309984865991765", "templateLink": { "contentVersion": "1.0.0.0", "id": null, "relativePath": null, "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" }, "timestamp": "2020-08-19T20:53:36.759312+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }