Fonctions d’étendue pour Bicep

Cet article décrit les fonctions Bicep pour l’obtention des valeurs d’étendue.

managementGroup

managementGroup()

Retourne un objet avec les propriétés du groupe d’administration dans le déploiement actuel.

managementGroup(identifier)

Retourne un objet utilisé pour définir l’étendue à un groupe d’administration.

Espace de noms : az.

Remarques

managementGroup() ne peut être utilisée que sur des déploiements de groupe d’administration. Elle retourne le groupe d’administration actuel pour l’opération de déploiement. À utiliser pour obtenir un objet d’étendue ou des propriétés pour le groupe d’administration actuel.

managementGroup(identifier) peut être utilisé pour n’importe quelle étendue de déploiement, mais uniquement pour obtenir l’objet d’étendue. Pour récupérer les propriétés d’un groupe d’administration, vous ne pouvez pas fournir l’identificateur du groupe d’administration.

Paramètres

Paramètre Obligatoire Type Description
identificateur Non string Identificateur unique du groupe d’administration sur lequel effectuer le déploiement. N’utilisez pas le nom complet du groupe d’administration. Si vous ne fournissez pas de valeur, le groupe d’administration actuel est retourné.

Valeur de retour

Objet utilisé pour définir la propriété scope sur un type de ressource de module ou d’extension. Ou un objet avec les propriétés du groupe d’administration actuel.

Exemple de groupe d’administration

L’exemple suivant définit l’étendue d’un module sur un groupe d’administration.

param managementGroupIdentifier string

module  'mgModule.bicep' = {
  name: 'deployToMG'
  scope: managementGroup(managementGroupIdentifier)
}

L’exemple suivant renvoie les propriétés du groupe d’administration actuel.

targetScope = 'managementGroup'

var mgInfo = managementGroup()

output mgResult object = mgInfo

Cela renvoie :

"mgResult": {
  "type": "Object",
  "value": {
    "id": "/providers/Microsoft.Management/managementGroups/examplemg1",
    "name": "examplemg1",
    "properties": {
      "details": {
        "parent": {
          "displayName": "Tenant Root Group",
          "id": "/providers/Microsoft.Management/managementGroups/00000000-0000-0000-0000-000000000000",
          "name": "00000000-0000-0000-0000-000000000000"
        },
        "updatedBy": "00000000-0000-0000-0000-000000000000",
        "updatedTime": "2020-07-23T21:05:52.661306Z",
        "version": "1"
      },
      "displayName": "Example MG 1",
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "type": "/providers/Microsoft.Management/managementGroups"
  }
}

L’exemple suivant crée un nouveau groupe d’administration et utilise cette fonction pour définir le groupe d’administration parent.

targetScope = 'managementGroup'

param mgName string = 'mg-${uniqueString(newGuid())}'

resource newMG 'Microsoft.Management/managementGroups@2023-04-01' = {
  scope: tenant()
  name: mgName
  properties: {
    details: {
      parent: {
        id: managementGroup().id
      }
    }
  }
}

output newManagementGroup string = mgName

resourceGroup

resourceGroup()

Renvoie un objet qui représente le groupe de ressources actuel.

resourceGroup(resourceGroupName)

And

resourceGroup(subscriptionId, resourceGroupName)

Retourne un objet utilisé pour définir l’étendue à un groupe de ressources.

Espace de noms : az.

Remarques

La fonction resourceGroup a deux utilisations distinctes. Une utilisation permet de définir l’étendue sur un type de ressource de module ou d’extension. L’autre utilisation consiste à obtenir des détails sur le groupe de ressources actuel. Le positionnement de la fonction détermine son utilisation. Lorsqu’elle est utilisée pour définir la propriété scope, elle retourne un objet d’étendue.

resourceGroup() peut être utilisé pour définir l’étendue ou obtenir des détails sur le groupe de ressources.

resourceGroup(resourceGroupName) et resourceGroup(subscriptionId, resourceGroupName) ne peuvent être utilisés que pour définir l’étendue.

Paramètres

Paramètre Obligatoire Type Description
resourceGroupName Non string Nom du groupe de ressources sur lequel effectuer le déploiement. Si vous ne fournissez pas de valeur, le groupe de ressources actuel est retourné.
subscriptionId Non string Identificateur unique de l’abonnement sur lequel effectuer le déploiement. Si vous ne fournissez pas de valeur, l’abonnement actuel est retourné.

Valeur de retour

Lorsqu’elle est utilisée pour définir l’étendue, la fonction retourne un objet qui est valide pour la propriété scope sur un type de ressource de module ou d’extension.

Lorsqu’elle est utilisée pour obtenir des détails sur le groupe de ressources, la fonction retourne le format suivant :

{
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "name": "{resourceGroupName}",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "{resourceGroupLocation}",
  "managedBy": "{identifier-of-managing-resource}",
  "tags": {
  },
  "properties": {
    "provisioningState": "{status}"
  }
}

La propriété ManagedBy est retournée uniquement pour les groupes de ressources qui contiennent des ressources gérées par un autre service. Pour Managed Applications, Databricks et AKS, la valeur de la propriété est l’ID de ressource de la ressource de gestion.

Exemple de groupe de ressources

L’exemple suivant définit l’étendue d’un module à un groupe de ressources.

param resourceGroupName string

module exampleModule 'rgModule.bicep' = {
  name: 'exampleModule'
  scope: resourceGroup(resourceGroupName)
}

L’exemple suivant retourne les propriétés du groupe de ressources.

output resourceGroupOutput object = resourceGroup()

Il retourne un objet au format suivant :

{
  "id": "/subscriptions/{subscription-id}/resourceGroups/examplegroup",
  "name": "examplegroup",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "southcentralus",
  "properties": {
    "provisioningState": "Succeeded"
  }
}

Une utilisation courante de la fonction resourceGroup consiste à créer des ressources dans le même emplacement que le groupe de ressources. L’exemple suivant utilise l’emplacement du groupe de ressources pour une valeur de paramètre par défaut.

param location string = resourceGroup().location

Vous pouvez également utiliser la fonction resourceGroup pour appliquer des balises du groupe de ressources à une ressource. Pour plus d’informations, voir Appliquer les balises d’un groupe de ressources.

subscription

subscription()

Retourne des détails concernant l’abonnement pour le déploiement actuel.

subscription(subscriptionId)

Retourne un objet utilisé pour définir l’étendue à un abonnement.

Espace de noms : az.

Remarques

La fonction subscription a deux utilisations distinctes. Une utilisation permet de définir l’étendue sur un type de ressource de module ou d’extension. L’autre utilisation consiste à obtenir des détails sur l’abonnement actuel. Le positionnement de la fonction détermine son utilisation. Lorsqu’elle est utilisée pour définir la propriété scope, elle retourne un objet d’étendue.

subscription(subscriptionId) ne peut être utilisé que pour définir l’étendue.

subscription() peut être utilisé pour définir l’étendue ou obtenir les détails sur l’abonnement.

Paramètres

Paramètre Obligatoire Type Description
subscriptionId Non string Identificateur unique de l’abonnement sur lequel effectuer le déploiement. Si vous ne fournissez pas de valeur, l’abonnement actuel est retourné.

Valeur de retour

Lorsqu’elle est utilisée pour définir l’étendue, la fonction retourne un objet qui est valide pour la propriété scope sur un type de ressource de module ou d’extension.

Lorsqu’elle est utilisée pour obtenir des détails sur l’abonnement, la fonction retourne le format suivant :

{
  "id": "/subscriptions/{subscription-id}",
  "subscriptionId": "{subscription-id}",
  "tenantId": "{tenant-id}",
  "displayName": "{name-of-subscription}"
}

Exemple d’abonnement

L’exemple suivant définit l’étendue d’un module à l’abonnement.

module exampleModule 'subModule.bicep' = {
  name: 'deployToSub'
  scope: subscription()
}

L’exemple suivant retourne les détails d’un abonnement.

output subscriptionOutput object = subscription()

tenant

tenant()

Retourne un objet utilisé pour définir l’étendue au locataire.

ou

Retourne le locataire de l’utilisateur.

Espace de noms : az.

Remarques

tenant() peut être utilisée pour toute étendue de déploiement. Elle retourne toujours le locataire actuel. Vous pouvez utiliser cette fonction pour définir l’étendue d’une ressource ou pour obtenir les propriétés du locataire actuel.

Valeur de retour

Objet utilisé pour définir la propriété scope sur un type de ressource de module ou d’extension. Ou un objet avec les propriétés du locataire actuel.

Exemple de locataire

L’exemple suivant illustre un module déployé sur le locataire.

module exampleModule 'tenantModule.bicep' = {
  name: 'deployToTenant'
  scope: tenant()
}

L’exemple suivant renvoie les propriétés d’un locataire.

var tenantInfo = tenant()

output tenantResult object = tenantInfo

Cela renvoie :

"tenantResult": {
  "type": "Object",
  "value": {
    "countryCode": "US",
    "displayName": "Contoso",
    "id": "/tenants/00000000-0000-0000-0000-000000000000",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
  }
}

Certaines ressources nécessitent la définition de l’ID de locataire pour une propriété. Plutôt que de fournir l’ID de locataire en tant que paramètre, vous pouvez le récupérer avec la fonction tenant.

resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = {
  name: 'examplekeyvault'
  location: 'westus'
  properties: {
    tenantId: tenant().tenantId
    ...
  }
}

Étapes suivantes

Pour en savoir plus sur les étendues de déploiement, consultez :