Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment limiter votre déploiement à un groupe de ressources. Vous utilisez un modèle Azure Resource Manager (modèle ARM) pour le déploiement. L’article montre également comment étendre l’étendue au-delà du groupe de ressources dans l’opération de déploiement.
Conseil / Astuce
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 plus d’informations, consultez Déploiements de groupes 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.
Schéma
Pour les modèles, utilisez le schéma suivant :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
...
}
Fichiers de fichiers de paramètres, utilisez :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
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-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
--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 avec des modèles ARM et un portail Azure
- Déployer des ressources avec des modèles ARM et Azure CLI
- Déployer des ressources avec des modèles ARM et Azure PowerShell
- Déployer des ressources avec des modèles ARM et l’API REST Azure Resource Manager
- Utiliser un bouton de déploiement pour déployer des modèles à partir du référentiel GitHub
- Déployer des modèles ARM à partir de Cloud Shell
Étendues de déploiement
Lors du déploiement dans un groupe de ressources, vous pouvez déployer des ressources pour :
- le groupe de ressources cible de l’opération
- 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
Les seules transitions d’étendue interdites se produisent du groupe de ressources ou de l’abonnement au groupe d’administration.
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 sur la ressource cible, ajoutez-les à la section Ressources du modèle.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
resource-group-resources
],
"outputs": {}
}
Pour obtenir un exemple de modèle, consultez Déployer dans le groupe de ressources cible.
Étendue au groupe de ressources du même abonnement
Pour déployer des ressources sur un autre groupe de ressources dans le même abonnement, ajoutez un déploiement imbriqué et incluez la resourceGroup
propriété. Si vous ne spécifiez pas l’ID d’abonnement ou le groupe de ressources, l’abonnement et le groupe de ressources du modèle parent sont utilisés. Tous les groupes de ressources doivent exister avant l’exécution du déploiement.
Dans l’exemple suivant, le déploiement imbriqué cible un groupe de ressources nommé demoResourceGroup
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
resource-group-resources
}
}
}
],
"outputs": {}
}
Pour obtenir un exemple de modèle, consultez Déployer sur plusieurs groupes de ressources.
Étendue au groupe de ressources dans un autre abonnement
Pour déployer des ressources sur un groupe de ressources dans un autre abonnement, ajoutez un déploiement imbriqué et incluez les subscriptionId
propriétés et resourceGroup
. Dans l’exemple suivant, le déploiement imbriqué cible un groupe de ressources nommé demoResourceGroup
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
resource-group-resources
}
}
}
],
"outputs": {}
}
Pour obtenir un exemple de modèle, consultez Déployer sur plusieurs groupes de ressources.
Étendue à l’abonnement
Pour déployer des ressources dans un abonnement, ajoutez un déploiement imbriqué et incluez la subscriptionId
propriété. L’abonnement peut être l’abonnement du groupe de ressources cible ou tout autre abonnement du locataire. Définissez également la location
propriété pour le déploiement imbriqué.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"location": "centralus",
"subscriptionId": "0000000-0000-0000-0000-000000000000",
"properties": {
"mode": "Incremental",
"template": {
subscription-resources
}
}
}
],
"outputs": {}
}
Pour obtenir un exemple de modèle, consultez Créer un groupe de ressources.
Étendue au locataire
Pour créer des ressources au niveau du locataire, définissez scope
sur /
. L’utilisateur qui déploie le modèle doit disposer de l’accès requis pour déployer au niveau du locataire.
Pour utiliser un déploiement imbriqué, définissez scope
et location
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"location": "centralus",
"scope": "/",
"properties": {
"mode": "Incremental",
"template": {
tenant-resources
}
}
}
],
"outputs": {}
}
Ou vous pouvez définir l’étendue sur /
pour certains types de ressources, comme les groupes d’administration.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string",
"defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
}
},
"resources": [
{
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('mgName')]",
"scope": "/",
"location": "eastus",
"properties": {}
}
],
"outputs": {
"output": {
"type": "string",
"value": "[parameters('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.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"minLength": 3,
"maxLength": 11
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
}
}
}
Déployer dans plusieurs groupes de ressources
Vous pouvez déployer sur plusieurs groupes de ressources dans un seul modèle ARM. Pour cibler un groupe de ressources différent de celui du modèle parent, utilisez un modèle imbriqué ou lié. Dans le type de ressource de déploiement, spécifiez les valeurs de l’ID d’abonnement et du groupe de ressources sur lesquels vous souhaitez que le modèle imbriqué soit déployé. Les groupes de ressources peuvent exister dans différents abonnements.
Remarque
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 ne contient que 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
:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"secondResourceGroup": {
"type": "string"
},
"secondSubscriptionID": {
"type": "string",
"defaultValue": ""
},
"secondStorageLocation": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"firstStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
"secondStorageName": "[concat(parameters('storagePrefix'), uniqueString(parameters('secondSubscriptionID'), parameters('secondResourceGroup')))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('firstStorageName')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedTemplate",
"resourceGroup": "[parameters('secondResourceGroup')]",
"subscriptionId": "[parameters('secondSubscriptionID')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('secondStorageName')]",
"location": "[parameters('secondStorageLocation')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
}
]
},
"parameters": {}
}
}
]
}
Si vous définissez resourceGroup
le nom d’un groupe de ressources qui n’existe pas, le déploiement échoue.
Pour tester le modèle précédent et voir les résultats, utilisez PowerShell ou Azure CLI.
Pour déployer deux comptes de stockage sur deux groupes de ressources dans le même abonnement, utilisez les éléments suivants :
firstRG="primarygroup"
secondRG="secondarygroup"
az group create --name $firstRG --location southcentralus
az group create --name $secondRG --location eastus
az deployment group create \
--name ExampleDeployment \
--resource-group $firstRG \
--template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
--parameters storagePrefix=tfstorage secondResourceGroup=$secondRG secondStorageLocation=eastus
Pour déployer deux comptes de stockage sur deux abonnements, utilisez les éléments suivants :
firstRG="primarygroup"
secondRG="secondarygroup"
firstSub="<first-subscription-id>"
secondSub="<second-subscription-id>"
az account set --subscription $secondSub
az group create --name $secondRG --location eastus
az account set --subscription $firstSub
az group create --name $firstRG --location southcentralus
az deployment group create \
--name ExampleDeployment \
--resource-group $firstRG \
--template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
--parameters storagePrefix=storage secondResourceGroup=$secondRG secondStorageLocation=eastus secondSubscriptionID=$secondSub
Créer un groupe de ressources
À partir d’un déploiement de groupe de ressources, vous pouvez passer au niveau d’un abonnement et créer un groupe de ressources. Le modèle suivant déploie un compte de stockage dans le groupe de ressources cible et crée un nouveau groupe de ressources dans l’abonnement spécifié.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"newResourceGroupName": {
"type": "string"
},
"nestedSubscriptionID": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"storageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demoSubDeployment",
"location": "westus",
"subscriptionId": "[parameters('nestedSubscriptionID')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('newResourceGroupName')]",
"location": "[parameters('location')]",
"properties": {}
}
],
"outputs": {}
}
}
}
]
}
Étapes suivantes
- Pour obtenir un exemple de déploiement des paramètres d’espace de travail pour Microsoft Defender pour le cloud, consultez deployASCwithWorkspaceSettings.json.