Fonctions d’étendue pour les modèles ARM

Resource Manager fournit les fonctions suivantes pour obtenir des valeurs d’étendue de déploiement dans votre modèle Azure Resource Manager (modèle ARM) :

Pour obtenir des valeurs de paramètres, de variables ou du déploiement actuel, consultez Fonctions de valeur de déploiement.

Conseil

Nous recommandons Bicep, parce qu’il offre les mêmes fonctionnalités que les modèles ARM et que la syntaxe est plus facile d’utilisation. Pour en savoir plus, consultez les fonctions d’étendue.

managementGroup

managementGroup()

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

Dans Bicep, utilisez la fonction d’étendue managementGroup.

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. Utilisez ce niveau pour obtenir des propriétés pour le groupe d’administration actuel.

Valeur retournée

Un objet avec les propriétés du groupe d’administration actuel.

Exemple de groupe d’administration

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "mgInfo": "[managementGroup()]"
  },
  "resources": [],
  "outputs": {
    "mgResult": {
      "type": "object",
      "value": "[variables('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": "00000000-0000-0000-0000-000000000000"
    },
    "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.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "mgName": {
      "type": "string",
      "defaultValue": "[format('mg-{0}', uniqueString(newGuid()))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Management/managementGroups",
      "apiVersion": "2020-05-01",
      "scope": "/",
      "name": "[parameters('mgName')]",
      "properties": {
        "details": {
          "parent": {
            "id": "[managementGroup().id]"
          }
        }
      }
    }
  ],
  "outputs": {
    "newManagementGroup": {
      "type": "string",
      "value": "[parameters('mgName')]"
    }
  }
}

resourceGroup

resourceGroup()

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

Dans Bicep, utilisez la fonction d’étendue resourceGroup.

Valeur retournée

L’objet renvoyé présente 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.

Notes

La fonction resourceGroup() ne peut pas être utilisée dans un modèle qui est déployé au niveau abonnement. Elle n’est utilisable que dans les modèles déployés sur un groupe de ressources. Vous pouvez utiliser la fonction resourceGroup() dans un modèle lié ou imbriqué (avec portée interne) qui cible un groupe de ressources, même lorsque le modèle parent est déployé dans l’abonnement. Dans ce scénario, le modèle lié ou imbriqué est déployé au niveau du groupe de ressources. Pour plus d’informations sur le ciblage d’un groupe de ressources dans un déploiement au niveau de l’abonnement, consultez Déployer des ressources Azure sur plusieurs groupes de ressources et des abonnements.

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.

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[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.

Quand vous utilisez des modèles imbriqués pour effectuer un déploiement sur plusieurs groupes de ressources, vous pouvez spécifier l’étendue de l’évaluation de la fonction resourceGroup. Pour plus d’informations, voir Déployer des ressources Azure sur plusieurs groupes de ressources et des abonnements.

Exemple de groupe de ressources

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "resourceGroupOutput": {
      "type": "object",
      "value": "[resourceGroup()]"
    }
  }
}

L’exemple précédent renvoie un objet dans le format suivant :

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

subscription

subscription()

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

Dans Bicep, utilisez la fonction d’étendue subscription.

Valeur retournée

La fonction retourne les informations au format suivant :

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

Notes

Quand vous utilisez des modèles imbriqués pour effectuer un déploiement sur plusieurs abonnements, vous pouvez spécifier l’étendue de l’évaluation de la fonction subscription. Pour plus d’informations, voir Déployer des ressources Azure sur plusieurs groupes de ressources et des abonnements.

Exemple d’abonnement

L’exemple suivant montre la fonction subscription appelée dans la section outputs.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "subscriptionOutput": {
      "type": "object",
      "value": "[subscription()]"
    }
  }
}

tenant

tenant()

Retourne le locataire de l’utilisateur.

Dans Bicep, utilisez la fonction d’étendue tenant.

Remarques

tenant() peut être utilisée pour toute étendue de déploiement. Elle retourne toujours le locataire actuel. Utilisez cette fonction pour obtenir les propriétés du locataire actuel.

Lors de la définition de l’étendue d’un modèle lié ou d’une ressource d’extension, utilisez la syntaxe suivante : "scope": "/".

Valeur retournée

Un objet avec les propriétés du locataire actuel.

Exemple de locataire

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "tenantInfo": "[tenant()]"
  },
  "resources": [],
  "outputs": {
    "tenantResult": {
      "type": "object",
      "value": "[variables('tenantInfo')]"
    }
  }
}

Cela renvoie :

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

Étapes suivantes