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

完了

リソースをデプロイできるさまざまなスコープについて理解しました。 このユニットでは、これらのスコープでデプロイする Bicep ファイルの書き込みを開始する方法について説明します。

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

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

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

targetScope = 'managementGroup'

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

管理グループのスコープでリソースをデプロイするように Bicep に指示しているが、 どの 管理グループを指定していないことに注意してください。 テンプレートをデプロイするときに、リソースをデプロイする管理グループを Bicep に正確に指示します。 Azure CLI コマンドレットと Azure PowerShell コマンドレットは、この情報を指定するための引数を提供します。

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

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

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

targetScope = 'subscription'

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

この例では、Bicep ファイルに targetScopesubscriptionがあることに注意してください。つまり、Bicep では、ファイル内のすべてのリソースが既定でサブスクリプション スコープであると見なされます。

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

デプロイを送信する

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

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

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

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

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

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

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

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