チュートリアル:ローカル ARM テンプレートをデプロイする
ローカル マシンから Azure Resource Manager テンプレート (ARM テンプレート) をデプロイする方法について説明します。 所要時間は約 8 分です。
これは、シリーズの最初のチュートリアルです。 このシリーズに取り組む過程で、リンク済みテンプレートを作成してテンプレートをモジュール化し、リンク済みテンプレートをストレージ アカウントに保存します。また、SAS トークンを使用して、リンク済みテンプレートをセキュリティで保護します。テンプレートをデプロイするための DevOps パイプラインを作成する方法も学びます。 このシリーズでは、テンプレートのデプロイについて重点的に説明します。 テンプレートの開発について知りたい方は、初心者向けチュートリアルを参照してください。
ツールを入手する
まず、テンプレートをデプロイするために必要なツールがあることを確認していきましょう。
コマンド ライン デプロイ
テンプレートをデプロイするには、Azure PowerShell または Azure CLI が必要です。 インストール手順については、以下を参照してください。
- Azure PowerShell をインストールするには
- Windows での Azure CLI のインストール
- Linux での Azure CLI のインストール
- macOS での Azure CLI のインストール
Azure PowerShell または Azure CLI をインストールした後で、初回サインインを行います。 ヘルプ情報については、PowerShell でのサインインまたは Azure CLI でのサインインに関するセクションを参照してください。
エディター (省略可能)
テンプレートは JSON ファイルです。 テンプレートを確認または編集するには、適切な JSON エディターが必要です。 Visual Studio Code と Resource Manager Tools 拡張機能をお勧めします。 これらのツールをインストールする必要がある場合は、「クイックスタート: Visual Studio Code を使用して ARM テンプレートを作成する」を参照してください。
テンプレートを確認する
このテンプレートは、ストレージ アカウント、App Service プラン、Web アプリをデプロイするものです。 テンプレートの作成に興味がある場合は、クイックスタート テンプレートのチュートリアルを参照してください。 ただし、このチュートリアルに取り組むうえで必須というわけではありません。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"projectName": {
"type": "string",
"minLength": 3,
"maxLength": 11,
"metadata": {
"description": "Specify a project name that is used to generate resource names."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Specify a location for the resources."
}
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
],
"metadata": {
"description": "Specify the storage account type."
}
},
"linuxFxVersion": {
"type": "string",
"defaultValue": "php|7.0",
"metadata": {
"description": "Specify the Runtime stack of current web app"
}
}
},
"variables": {
"storageAccountName": "[format('{0}{1}', parameters('projectName'), uniqueString(resourceGroup().id))]",
"webAppName": "[format('{0}WebApp', parameters('projectName'))]",
"appServicePlanName": "[format('{0}Plan', parameters('projectName'))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-09-01",
"name": "[variables('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "B1",
"tier": "Basic",
"size": "B1",
"family": "B",
"capacity": 1
},
"kind": "linux",
"properties": {
"perSiteScaling": false,
"reserved": true,
"targetWorkerCount": 0,
"targetWorkerSizeId": 0
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-09-01",
"name": "[variables('webAppName')]",
"location": "[parameters('location')]",
"kind": "app",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
"siteConfig": {
"linuxFxVersion": "[parameters('linuxFxVersion')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
]
}
],
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints]"
}
}
}
重要
ストレージ アカウント名は、一意で、長さが 3 から 24 文字で、数字と小文字のみを使用する必要があります。 サンプル テンプレートの storageAccountName
変数では、projectName
パラメーターの最大 11 文字と、13 文字の uniqueString が結合されています。
テンプレートのコピーに .json という拡張子を付けてローカル コンピューターに保存します (例: azuredeploy.json)。 このテンプレートは、後でこのチュートリアルの中でデプロイします。
Azure へのサインイン
Azure PowerShell または Azure CLI を使用して、テンプレートのデプロイを開始するには、Azure の資格情報を使用してサインインします。
Connect-AzAccount
複数の Azure サブスクリプションがある場合は、使用するサブスクリプションを選択します。
[SubscriptionID/SubscriptionName]
と角かっこ []
を実際のサブスクリプション情報に置き換えます。
Set-AzContext [SubscriptionID/SubscriptionName]
リソース グループの作成
テンプレートをデプロイするときは、リソースを格納するリソース グループを指定します。 デプロイ コマンドを実行する前に、Azure CLI または Azure PowerShell を使用してリソース グループを作成します。 次のコード セクションのタブを選択し、Azure PowerShell または Azure CLI を選択してください。 この記事の CLI の例は、Bash シェルを対象として記述されています。
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource and resource group names"
$resourceGroupName = "${projectName}rg"
New-AzResourceGroup `
-Name $resourceGroupName `
-Location "Central US"
テンプレートのデプロイ
一方または両方のデプロイ オプションを使用してテンプレートをデプロイします。
$projectName = Read-Host -Prompt "Enter the same project name"
$templateFile = Read-Host -Prompt "Enter the template file path and file name"
$resourceGroupName = "${projectName}rg"
New-AzResourceGroupDeployment `
-Name DeployLocalTemplate `
-ResourceGroupName $resourceGroupName `
-TemplateFile $templateFile `
-projectName $projectName `
-verbose
Azure PowerShell を使用してテンプレートをデプロイする方法の詳細については、「ARM テンプレートと Azure PowerShell を使用したリソースのデプロイ」をご覧ください。
リソースをクリーンアップする
リソース グループを削除して、デプロイしたリソースをクリーンアップします。
- Azure portal で、左側のメニューから [リソース グループ] を選択します。
- [名前でフィルター] フィールドに、リソース グループ名を入力します。
- リソース グループ名を選択します。
- トップ メニューから [リソース グループの削除] を選択します。
次のステップ
ローカル テンプレートをデプロイする方法について説明しました。 次のチュートリアルでは、テンプレートをメイン テンプレートとリンク済みテンプレートに分けたうえで、リンク済みテンプレートを保存してセキュリティを確保する方法について説明します。