チュートリアル:依存リソースを含む ARM テンプレートを作成する
Azure Resource Manager テンプレート (ARM テンプレート) を作成して、複数のリソースをデプロイしたりデプロイ順序を構成したりする方法を説明します。 テンプレートを作成したら、Azure portal から Azure Cloud Shell を使用してテンプレートをデプロイします。
このチュートリアルでは、ストレージ アカウント、仮想マシン、仮想ネットワーク、およびその他の依存リソースを作成します。 別のリソースが存在するまではデプロイできないリソースもあります。 たとえば、仮想マシンを作成するには、そのストレージ アカウントとネットワーク インターフェイスが存在している必要があります。 このリレーションシップは、一方のリソースと他方のリソースに依存関係を持たせることにより定義します。 Resource Manager により、リソース間の依存関係が評価され、リソースは依存する順にデプロイされます。 相互依存していないリソースは、平行してデプロイされます。 詳細については、「Azure Resource Manager テンプレートでのリソース デプロイ順序の定義」を参照してください。
このチュートリアルに含まれるタスクは次のとおりです。
- クイック スタート テンプレートを開く
- テンプレートを調べる
- テンプレートのデプロイ
Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
リソースの依存関係について取り上げた Learn モジュールについては、「高度な ARM テンプレート機能を使用して複雑なクラウド デプロイを管理する」を参照してください。
前提条件
この記事を完了するには、以下が必要です。
Visual Studio Code と Resource Manager ツール拡張機能。 「クイック スタート:Visual Studio Code を使用して ARM テンプレートを作成する」を参照してください。
セキュリティを向上させるには、生成されたパスワードを仮想マシンの管理者アカウントに対して使用します。 Azure Cloud Shell を使用して、PowerShell または Bash で次のコマンドを実行できます。
openssl rand -base64 32
詳細については、
man openssl rand
を実行して man ページを開きます。Azure Key Vault は、暗号化キーおよびその他のシークレットを保護するために設計されています。 詳細については、ARM テンプレートのデプロイで Azure Key Vault を統合する」を参照してください。 パスワードは 3 か月ごとに更新することをお勧めします。
クイック スタート テンプレートを開く
Azure クイックスタート テンプレートは、ARM テンプレートのリポジトリです。 テンプレートを最初から作成しなくても、サンプル テンプレートを探してカスタマイズすることができます。 このチュートリアルで使用するテンプレートは、「Deploy a simple Windows VM」(単純な Windows VM をデプロイする) と呼ばれます。
Visual Studio Code から、 [ファイル]>[ファイルを開く] を選択します。
[ファイル名] に以下の URL を貼り付けます。
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
[開く] を選択して、ファイルを開きます。
[ファイル]>[Save As](名前を付けて保存) を選択し、このファイルのコピーを azuredeploy.json という名前でローカル コンピューターに保存します。
テンプレートを調べる
このセクションでテンプレートを調べるときは、次の質問に回答するようにしてください。
- このテンプレートに定義されている Azure リソースの数はいくつか。
- リソースの 1 つは、Azure Storage アカウントです。 定義は前回のチュートリアルで使用されたものと同じか。
- このテンプレートに定義されているリソースのテンプレート 参照を見つけることができるか。
- リソースの依存関係を見つけることができるか。
Visual Studio Code で、
resources
内の最初のレベルの要素と 2 番目のレベルの要素のみが表示されるまで要素を折り畳みます。テンプレートによって定義されたリソースは、6 つあります。
Microsoft.Compute/virtualMachines。
テンプレートをカスタマイズする前に、テンプレートのリファレンスを確認しておくと参考になります。
最初のリソースを展開します。 それはストレージ アカウントです。 リソース定義とテンプレート リファレンスを比較します。
2 番目のリソースを展開します。 リソースの種類は
Microsoft.Network/publicIPAddresses
です。 リソース定義とテンプレート リファレンスを比較します。3 番目のリソースを展開します。 リソースの種類は
Microsoft.Network/networkSecurityGroups
です。 リソース定義とテンプレート リファレンスを比較します。4 番目のリソースを展開します。 リソースの種類は
Microsoft.Network/virtualNetworks
です。dependsOn
要素を使用すると、1 つのリソースが 1 つ以上のリソースに依存していることを定義できます。 このリソースは、もう 1 つのリソースに依存しています。Microsoft.Network/networkSecurityGroups
5 番目の要素を展開します。 リソースの種類は
Microsoft.Network/networkInterfaces
です。 このリソースは他の 2 つのリソースに依存しています。Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks
6 番目のリソースを展開します。 このリソースは、仮想マシンです。 次に示す他の 2 つのリソースに依存しています。
Microsoft.Storage/storageAccounts
Microsoft.Network/networkInterfaces
次の図は、このテンプレートのリソースと依存関係の情報を示しています。
依存関係を指定することにより、Resource Manager は、ソリューションを効率的にデプロイします。 ストレージ アカウント、パブリック IP アドレス、および仮想ネットワークは、依存関係がないため、同時にデプロイされます。 パブリック IP アドレスと仮想ネットワークがデプロイされると、ネットワーク インターフェイスが作成されます。 その他のすべてのリソースがデプロイされると、Resource Manager は、仮想マシンをデプロイします。
テンプレートのデプロイ
Cloud Shell にサインインします。
左上の [PowerShell] または [Bash] (CLI の場合) を選択して、希望の環境を選択します。 切り替えた場合は、シェルを再起動する必要があります。
[ファイルのアップロード/ダウンロード] を選択し、 [アップロード] を選択します。 先のスクリーンショットをご覧ください。 前に保存したファイルを選択します。 ファイルをアップロードした後、
ls
コマンドとcat
コマンドを使用して、ファイルが正常にアップロードされたことを確認できます。次の PowerShell スクリプトを実行してテンプレートをデプロイします。
echo "Enter a project name that is used to generate resource group name:" && read projectName && echo "Enter the location (i.e. centralus):" && read location && echo "Enter the virtual machine admin username:" && read adminUsername && echo "Enter the DNS label prefix:" && read dnsLabelPrefix && resourceGroupName="${projectName}rg" && az group create --name $resourceGroupName --location $location && az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json" --parameters adminUsername=$adminUsername dnsLabelPrefix=$dnsLabelPrefix
仮想マシンの確認を目的とする仮想マシンへの RDP が、正常に作成されました。
リソースをクリーンアップする
Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。
- Azure portal で、左側のメニューから [リソース グループ] を選択します。
- [名前でフィルター] フィールドに、リソース グループ名を入力します。
- リソース グループ名を選択します。 リソース グループ内の合計 6 つのリソースが表示されます。
- トップ メニューから [リソース グループの削除] を選択します。
次のステップ
このチュートリアルでは、テンプレートを作成してデプロイし、仮想マシン、仮想ネットワーク、および依存リソースを作成しました。 デプロイ スクリプトを使用してデプロイ前後の操作を実行する方法については、次のページを参照してください。