さまざまなスコープにテンプレートをデプロイする
ここまでで、リソースをデプロイできるさまざまなスコープのことがわかりました。 このユニットでは、これらのスコープにデプロイする 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 のコマンドレットには、この情報を指定するための引数が用意されています。
ファイルの targetScope
を resourceGroup
、subscription
、managementGroup
、または tenant
に設定できます。 ターゲット スコープを指定しない場合、Bicep は resourceGroup
スコープを想定します。
リソース グループを作成する
さまざまなスコープにデプロイを作成する方法を理解したら、この知識を応用して、サブスクリプションスコープのリソースであるリソース グループを作成してみましょう。
targetScope = 'subscription'
resource resourceGroup 'Microsoft.Resources/resourceGroups@2024-07-01' = {
name: 'example-resource-group'
location: 'westus'
}
この例では、Bicep ファイルの targetScope
は subscription
です。これは、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
という名前の別のデプロイを作成すると、既存のデプロイが上書きされます。