Déploiements de groupes de ressources avec des fichiers Bicep
Cet article explique comment définir l’étendue avec Bicep lors du déploiement sur un groupe de ressources.
Ressources prises en charge
La plupart des ressources peuvent être déployées dans un groupe de ressources. Pour obtenir la liste des ressources disponibles, consultez Référence de modèle Resource Manager.
Étendue de jeu
Par défaut, un fichier Bicep est défini sur l’étendue du groupe de ressources. Si vous souhaitez définir explicitement l’étendue, utilisez :
targetScope = 'resourceGroup'
Toutefois, il est inutile de définir l’étendue cible sur le groupe de ressources, car cette étendue est utilisée par défaut.
Commandes de déploiement
Pour un déploiement dans un groupe de ressources, utilisez les commandes de déploiement de groupe de ressources.
Pour Azure CLI, utilisez az deployment group create. L’exemple suivant déploie un modèle pour créer un groupe de ressources. Le groupe de ressources que vous spécifiez dans le paramètre --resource-group
est le groupe de ressources cible.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-file main.bicep \
--parameters storageAccountType=Standard_GRS
Pour plus d’informations sur les commandes et options de déploiement de modèles Resource Manager, consultez :
- Déployer des ressources à l’aide de modèles ARM et l’interface CLI Azure
- Déployer des ressources à l’aide de modèles Resource Manager et d’Azure PowerShell
- Déployer des modèles Resource Manager à partir de Cloud Shell
Étendues de déploiement
Lors du déploiement dans un groupe de ressources, vous pouvez déployer des ressources vers :
- le groupe de ressources cible pour l’opération de déploiement
- d’autres groupes de ressources dans le même abonnement ou dans d’autres abonnements
- tout abonnement dans le locataire
- le locataire pour le groupe de ressources
Une ressource d’extension peut être étendue à une cible différente de la cible de déploiement.
L’utilisateur qui déploie le modèle doit avoir accès à l’étendue spécifiée.
Cette section montre comment spécifier des étendues différentes. Vous pouvez combiner ces différentes étendues dans un seul modèle.
Étendue au groupe de ressources cible
Pour déployer des ressources dans le groupe de ressources cible, ajoutez ces ressources au fichier Bicep.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
Pour obtenir un exemple de modèle, consultez Déployer dans le groupe de ressources cible.
Définir l’étendue sur un autre groupe de ressources
Pour déployer des ressources sur un groupe de ressources qui n’est pas le groupe de ressources cible, ajoutez un module. Utilisez la fonction resourceGroup pour définir la propriété scope
de ce module.
Si le groupe de ressources se trouve dans un autre abonnement, fournissez l’ID d’abonnement et le nom du groupe de ressources. Si le groupe de ressources se trouve dans le même abonnement que le déploiement en cours, fournissez uniquement le nom du groupe de ressources. Si vous ne spécifiez pas d’abonnement dans la fonction resourceGroup, l’abonnement actuel est utilisé.
L’exemple qui suit montre un module qui cible un groupe de ressources dans un autre abonnement.
param otherResourceGroup string
param otherSubscriptionID string
// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
name: 'otherSubAndRG'
scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}
L’exemple suivant montre un module qui cible un groupe de ressources dans le même abonnement.
param otherResourceGroup string
// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'otherRG'
scope: resourceGroup(otherResourceGroup)
}
Pour obtenir un exemple de modèle, consultez Déployer sur plusieurs groupes de ressources.
Étendue à l’abonnement
Pour déployer des ressources sur un abonnement, ajoutez un module. Utilisez la fonction d’abonnement pour définir sa propriété scope
.
Pour effectuer un déploiement sur l’abonnement actuel, utilisez la fonction d’abonnement sans paramètre.
// module deployed at subscription level
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription()
}
Pour effectuer un déploiement vers un autre abonnement, spécifiez cet ID d’abonnement en tant que paramètre dans la fonction d’abonnement.
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription(otherSubscriptionID)
}
Pour obtenir un exemple de modèle, consultez Créer un groupe de ressources avec Bicep.
Étendue au locataire
Pour créer des ressources au niveau du locataire, ajoutez un module. Utilisez la fonction locataire pour définir sa propriété scope
.
L’utilisateur qui déploie le modèle doit disposer de l’accès requis pour déployer au niveau du locataire.
L’exemple suivant inclut un module qui est déployé sur le locataire.
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Au lieu d’utiliser un module, vous pouvez définir l’étendue sur tenant()
pour certains types de ressources. L’exemple suivant déploie un groupe d’administration au niveau du locataire.
param mgName string = 'mg-${uniqueString(newGuid())}'
// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2023-04-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = mgName
Pour plus d’informations, consultez Groupe d’administration.
Déployer dans le groupe de ressources cible
Pour déployer des ressources dans le groupe de ressources cible, définissez ces ressources dans la section resources
du modèle. Le modèle suivant crée un compte de stockage dans le groupe de ressources qui est spécifié dans l’opération de déploiement.
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Déployer dans plusieurs groupes de ressources
Vous pouvez déployer plusieurs groupes de ressources dans un même fichier Bicep.
Notes
Vous pouvez déployer sur 800 groupes de ressources en un seul déploiement. En règle générale, cette limitation signifie que vous pouvez déployer sur 1 groupe de ressources spécifié pour le modèle parent et jusqu’à 799 groupes de ressources dans les déploiements imbriqués ou liés. Toutefois, si votre modèle parent contient uniquement des modèles imbriqués ou liés et ne déploie lui-même aucune ressource, vous pouvez inclure jusqu’à 800 groupes de ressources dans les déploiements imbriqués ou liés.
L’exemple suivant déploie deux comptes de stockage. Le premier compte de stockage est déployé sur le groupe de ressources spécifié lors de l’opération de déploiement. Le second compte de stockage est déployé sur le groupe de ressources spécifié dans les paramètres secondResourceGroup
et secondSubscriptionID
:
@maxLength(11)
param storagePrefix string
param firstStorageLocation string = resourceGroup().location
param secondResourceGroup string
param secondSubscriptionID string = ''
param secondStorageLocation string
var firstStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
var secondStorageName = '${storagePrefix}${uniqueString(secondSubscriptionID, secondResourceGroup)}'
module firstStorageAcct 'storage.bicep' = {
name: 'storageModule1'
params: {
storageLocation: firstStorageLocation
storageName: firstStorageName
}
}
module secondStorageAcct 'storage.bicep' = {
name: 'storageModule2'
scope: resourceGroup(secondSubscriptionID, secondResourceGroup)
params: {
storageLocation: secondStorageLocation
storageName: secondStorageName
}
}
Les deux modules utilisent le même fichier Bicep nommé storage.bicep.
param storageLocation string
param storageName string
resource storageAcct 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageName
location: storageLocation
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
Créer un groupe de ressources
Pour des informations sur la création de groupes de ressources, consultez Créer un groupe de ressources avec Bicep.
Étapes suivantes
Pour en apprendre plus sur d’autres étendues, consultez :