さまざまなスコープにテンプレートをデプロイする

完了

ここまでで、リソースをデプロイできるさまざまなスコープのことがわかりました。 このユニットでは、これらのスコープにデプロイする Bicep ファイルの記述を始める方法について説明します。

Bicep ファイルのターゲット スコープを指定する

Bicep が、ファイルのデプロイ先のスコープを認識する必要があります。 この情報は重要です。なぜなら、デプロイするリソースが使用しているスコープに対して有効であることを、Bicep 側で確認する必要があるからです。 たとえば、サポートされていないスコープにリソースを定義しようとすると、Visual Studio Code 用 Bicep 拡張機能によって警告が表示されます。

ファイル内のリソースが特定のスコープ用であることを Bicep に伝えるには、targetScope キーワードを使用します。 管理グループ スコープにリソースをデプロイする Bicep ファイルの例を次に示します。

targetScope = 'managementGroup'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = {
  // ...
}

リソースを管理グループ スコープにデプロイするように Bicep に指示していますが、"どの" 管理グループかは指定していません。 テンプレートをデプロイするときに、リソースをデプロイしたい管理グループを正確に Bicep に伝えます。 Azure CLI と Azure PowerShell のコマンドレットには、この情報を指定するための引数が用意されています。

ファイルの targetScoperesourceGroupsubscriptionmanagementGroup、または tenant に設定できます。 ターゲット スコープを指定しない場合、Bicep は resourceGroup スコープを想定します。

リソース グループを作成する

さまざまなスコープにデプロイを作成する方法を理解したら、この知識を応用して、サブスクリプションスコープのリソースであるリソース グループを作成してみましょう。

targetScope = 'subscription'

resource resourceGroup 'Microsoft.Resources/resourceGroups@2024-07-01' = {
  name: 'example-resource-group'
  location: 'westus'
}

この例では、Bicep ファイルの targetScopesubscription です。これは、Bicep が、ファイル内のすべてのリソースを既定でサブスクリプション スコープであるとみなすことを意味します。

Note

Bicep を使用して Azure サブスクリプションと管理グループを作成する方法については、このモジュールの後半で説明します。

デプロイを送信する

デプロイを始めるときは、それをデプロイするスコープを Azure に伝える必要があります。 つまり、次に示すように、デプロイ スコープごとに異なる Azure CLI コマンドを使用します。

このスコープにデプロイするには: 次の Azure CLI コマンドを実行します。
Resource group az deployment group create
サブスクリプション az deployment sub create
管理グループ az deployment mg create
Tenant az deployment tenant create

デプロイを始めるときは、それをデプロイするスコープを Azure に伝える必要があります。 つまり、次に示すように、デプロイ スコープごとに異なる PowerShell コマンドレットを使用します。

このスコープにデプロイするには: 次の PowerShell コマンドレットを使用します。
Resource group New-AzResourceGroupDeployment
サブスクリプション New-AzSubscriptionDeployment
管理グループ New-AzManagementGroupDeployment
Tenant New-AzTenantDeployment

Azure により、各デプロイに関するメタデータが格納されます。 リソース グループ スコープのデプロイとは異なり、他のスコープでのデプロイ時には、Azure がメタデータを正しく保存できるように、いくつかの情報を指定する必要があります。

  • 場所: デプロイのメタデータは、指定した場所に格納される必要があります。 デプロイ メタデータはリソース グループと同じ場所を使用するため、リソース グループ スコープのデプロイの場所を指定する必要はありません。 ただし、サブスクリプション、管理グループ、またはテナントの各スコープのデプロイを作成するときは、デプロイのメタデータが保存される Azure リージョンを指定する必要があります。 これらのスコープ内のデプロイのリソースは、メタデータに指定したのと常に同じ場所に作成されるとは限りません。

  • 名前: Azure 内のすべてのデプロイには名前があります。 名前を使用して、デプロイに関する情報を Azure に問い合わせることができます。 Azure CLI または Azure PowerShell を使用してデプロイを送信する場合、名前を指定する必要はありません。 ただし、指定しない場合は、テンプレート ファイルのファイル名がデプロイ名として使用されます。

デプロイのスコープ、場所、名前の組み合わせは一意である必要があります。 たとえば、my-deployment という名前のサブスクリプション デプロイを作成し、米国東部の場所を使用してそのメタデータを保存するとします。 西ヨーロッパのような別の場所でも、同じサブスクリプションに同じ my-deployment という名前の別のデプロイを作成することはできません。 米国東部で my-deployment という名前の別のデプロイを作成すると、既存のデプロイが上書きされます。