演習 - Azure Resource Manager テンプレートを作成してデプロイする
注意
初めてサンドボックスをアクティブ化して利用規約に同意すると、Microsoft アカウントが Microsoft Learn サンドボックスという名前の新しい Azure ディレクトリに関連付けられます。 また、コンシェルジェ サブスクリプションという名前の特殊なサブスクリプションにも追加されます。
この演習では、Azure Resource Manager (ARM) テンプレートを作成し、それを Azure にデプロイした後、その ARM テンプレートを更新してパラメーターと出力を追加します。
この演習では、Visual Studio Code 用 Azure Resource Manager ツールを使用します。 演習を開始する前に、この拡張機能を Visual Studio Code にインストールしてください。
ARM テンプレートを作成する
Visual Studio Code を開き、azuredeploy.json という名前の新しいファイルを作成します。
Visual Studio Code ARM テンプレート拡張機能には、テンプレートの開発に役立つスニペットが構成されています。 では、まず空のテンプレートを追加しましょう。 ファイルの 1 行目に「arm」と入力します。
Visual Studio Code によって、arm! で始まるいくつかの選択肢が自動的に表示されます。 Azure Resource Manager (ARM) テンプレートを選択します。 Visual Studio Code によって、テンプレートのスキーマと言語が自動的に処理されます。
ファイルは次のようになります。
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "functions": [], "variables": {}, "resources": [], "outputs": {} }
このファイルには、前のユニットで説明した ARM テンプレートのすべてのセクションが含まれていることに注意してください。
Ctrl + S キーを押して、変更内容をファイルに保存します。
ARM テンプレートを Azure にデプロイする
このテンプレートを Azure にデプロイするには、Visual Studio Code ターミナルから Azure アカウントにサインインする必要があります。 Azure CLI ツールがインストールされていることを確認し、サンドボックスのアクティブ化に使用したのと同じアカウントでサインインします。
[ターミナル] > [新しいターミナル] を選択して、ターミナル ウィンドウを開きます。
ターミナル ウィンドウのコマンド バーに bash が表示されている場合は、作業に適したシェルが設定されているので、次のセクションにスキップできます。
それ以外の場合は、ドロップダウンを選択し、[Select Default Profile] (既定のプロファイルの選択) を選択します。
[Git Bash] を選択します。
[ターミナル] > [新しいターミナル] を選択して、Bash シェル ターミナル ウィンドウを開きます。
Azure へのサインイン
ターミナル ウィンドウで、次のコマンドを実行して Azure にサインインします。
az login
開いたブラウザー ウィンドウで、自分のアカウントにサインインします。 サインインすると、このアカウントに関連付けられているサブスクリプションの一覧がターミナルに表示されます。 サンドボックスをアクティブ化した場合は、"コンシェルジェ サブスクリプション" という名前のサブスクリプションが表示されます。 このサブスクリプションを、演習の残りの部分で使用します。
bash シェルで次のコマンドを実行して、このセッションで実行するすべての Azure CLI コマンドの既定のサブスクリプションを設定します。
az account set --subscription "Concierge Subscription"
複数のサンドボックスを最近使用した場合は、複数の "Concierge Subscription" が一覧に表示される可能性があります。 その場合は、次の 2 つの手順を使用して、既定のサブスクリプションを特定して設定します。
- 次のコマンドを実行して、"コンシェルジェ サブスクリプション" の ID を取得します。
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
- 次のコマンドを実行して、既定のサブスクリプションを設定します。このとき、{your subscription ID} を コンシェルジェ サブスクリプションの最新の ID に置き換えます。
az account set --subscription {your subscription ID}
既定のリソース グループを設定する
既定のリソース グループを、サンドボックスをアクティブ化するときに作成されたリソース グループに設定すると、この演習の Azure CLI コマンドでそのパラメーターを省略できます。 リソース グループを設定するには、次のコマンドを実行します。
az configure --defaults group=<rgn>[sandbox resource group name]</rgn>
テンプレートを Azure にデプロイする
次のコマンドを実行して、ARM テンプレートを Azure にデプロイします。 この ARM テンプレートにまだリソースが含まれていないため、ここには作成済みのリソースはありません。 デプロイが成功します。
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="blanktemplate-"$today
az deployment group create \
--name $DeploymentName \
--template-file $templateFile
上のコードの先頭のセクションでは、Azure CLI 変数が設定されます。これには、デプロイするテンプレート ファイルのパスとデプロイの名前が含まれます。 下部のセクション az deployment group create
により、テンプレートが Azure にデプロイされます。 デプロイ名が、日付をサフィックスとした blanktemplate
になっていることに注意してください。
ターミナルに Running...
が表示されます。
このテンプレートを Azure にデプロイするには、Visual Studio Code ターミナルから Azure アカウントにサインインする必要があります。 Visual Studio Code 拡張機能から Azure PowerShell ツールをインストールしていることを確認し、サンドボックスをアクティブ化したのと同じアカウントにサインインします。
コマンド バーで [ターミナル] > [新しいターミナル] を選択して、PowerShell ウィンドウを開きます。
ターミナル ウィンドウのコマンド バーに PowerShell が表示されている場合は、作業に使用できるシェルが設定されているので、次のセクションにスキップできます。
表示されていない場合は、下矢印を選択し、ドロップダウン リストで [PowerShell] を選択します。 そのオプションが見つからない場合は、[Select Default Profile](既定のプロファイルの選択) を選択します。
入力フィールドで下にスクロールし、[PowerShell] を選択します。
[ターミナル] > [新しいターミナル] を選択して、PowerShell ターミナル ウィンドウを開きます。
Azure PowerShell を使用して Azure にサインインする
Visual Studio Code のターミナルから次のコマンドを実行して、Azure にサインインします。 ブラウザーが開き、アカウントにサインインできるようになります。
Connect-AzAccount
ヒント
Az PowerShell モジュールは AzureRM の代わりであり、Azure との対話に使用することをお勧めするバージョンです。
サンドボックスのアクティブ化に使用したアカウントを使用してサインインします。 サインインすると、アカウントに関連付けられているサブスクリプションが Visual Studio Code によってターミナル ウィンドウに一覧表示されます。 サンドボックスをアクティブ化した場合、
"name": "Concierge Subscription"
を含むコード ブロックが表示されます。 このサブスクリプションは、この演習の残りの部分で使用します。
このセッションのすべての PowerShell コマンドに既定のサブスクリプションを設定する
次のコマンドを実行して、サブスクリプションとその ID を取得します。 サブスクリプション ID は 2 番目の列です。 "コンシェルジェ サブスクリプション" を探し、2 番目の列をコピーします。 これは、"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" のような文字列になります。
Get-AzSubscription
次のコマンドを実行し、{Your subscription ID} を前の手順でコピーしたサブスクリプションに置き換えます。 このコマンドは、アクティブなサブスクリプションを "Concierge Subscription" に変更します。
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
次のコマンドを実行して、サンドボックス環境で作成されたリソース グループを既定のリソース グループにします。 この操作により、この演習の残りの Azure PowerShell コマンドでそのパラメーターを省略できるようになります。
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
テンプレートを Azure にデプロイする
次のコマンドを実行して、テンプレートを Azure にデプロイします。 この ARM テンプレートにまだリソースが含まれていないため、ここには作成済みのリソースはありません。
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="blanktemplate-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile
上記のコードの先頭のセクションで、デプロイ ファイルへのパスとデプロイの名前など、Azure PowerShell 変数を設定します。 次に、New-AzResourceGroupDeployment
コマンドで、テンプレートを Azure にデプロイします。 デプロイ名が、日付をサフィックスとした blanktemplate
になっていることに注意してください。
ARM テンプレートを Azure にデプロイしたら、Azure portal にアクセスして、サンドボックス サブスクリプション内にいることを確認します。 それには、ページの右上隅にある自分のアバターを選択します。 [ディレクトリの切り替え] を選択します。 リストで、[Microsoft Learn サンドボックス] ディレクトリを選択します。
リソース メニューで、[リソース グループ] を選択します。
[サンドボックス リソース グループ名] というリソース グループを選択します。
[概要] ペインに、1 件のデプロイが成功したことが表示されます。
[1 Succeeded] (1 件の成功) を選択して、デプロイの詳細を確認します。
blanktemplate
を選択して、どのリソースがデプロイされたかを確認します。 この場合は、まだテンプレートでリソースを指定していないため、これは空です。デプロイをもう一度確認できるように、ブラウザーでページを開いたままにしておきます。
ARM テンプレートにリソースを追加する
前のタスクでは、空のテンプレートを作成し、それをデプロイする方法を学習しました。 これで、実際のリソースをデプロイする準備ができました。 このタスクでは、Azure Resource Manager Tools for Visual Studio Code 拡張機能のスニペットを使用して、ARM テンプレートに Azure ストレージ アカウント リソースを追加します。
Visual Studio Code の azuredeploy.json ファイルで、resources ブロック
"resources":[],
の角かっこ内にカーソルを置きます。角かっこ内に「storage」と入力します。 関連するスニペットのリストが表示されます。 [arm-storage] を選択します。
ファイルは次のようになります。
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "functions": [], "variables": {}, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-05-01", "name": "storageaccount1", "tags": { "displayName": "storageaccount1" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Premium_LRS" } } ], "outputs": {} }
編集が必要な値が、ファイルの新しいセクションで強調表示され、Tab キーを使用して移動できます。
tags
およびlocation
属性が入力されていることに注意してください。location
属性は関数を使用して、リソースの場所をリソース グループの場所に設定します。 タグと関数については、次のモジュールで説明します。リソース name と displayName の値を任意の一意の値に変更します (例: learnexercise12321)。 この名前は Azure 全体で一意である必要があるため、何か自分にとって一意の値を選択します。
SKU の name の値を Premium_LRS から Standard_LRS に変更します。 tier の値を Standard に変更します。 Visual Studio Code により、IntelliSense で属性値に適切な選択肢が提供されることに注意してください。 引用符が含まれる既定値を削除し、引用符を入力して、これが機能することを確認します。
リソースの場所は、リソースがデプロイされているリソース グループと同じ場所に設定されます。 ここでは既定値のままにします。
ファイルを保存します。
更新された ARM テンプレートをデプロイする
ここでは、このデプロイの実行内容を適切に反映するようにデプロイの名前を変更します。
ターミナルで、次の Azure CLI コマンドを入力します。 このスニペットは以前に使用したコードと同じですが、デプロイの名前が変更されています。
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addstorage-"$today
az deployment group create \
--name $DeploymentName \
--template-file $templateFile
ターミナルで、次の Azure PowerShell コマンドを実行します。 このスニペットは以前に使用したコードと同じですが、デプロイの名前が変更されています。
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addstorage-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile
デプロイをチェックする
デプロイが完了したら、ブラウザーの Azure portal に戻ります。 リソース グループに移動して、[2 Succeeded]\(2 件の成功\) のデプロイがあることを確認します。 このリンクを選択します。
両方のデプロイが一覧にあることに注意してください。
[addstorage] を選択します。
ストレージ アカウントがデプロイされていることに注目してください。