Démarrage rapide : Définir et affecter un blueprint Azure avec Azure CLI

Important

Le 11 juillet 2026, Blueprints (préversion) sera devenu obsolète. Migrez vos définitions et affectations Blueprint existantes vers les Spécifications de modèleet lesPiles de déploiement. Les artefacts de Blueprint doivent être convertis en modèles ARM JSON ou en fichiers Bicep utilisés pour définir des piles de déploiement. Pour savoir comment créer un artefact en tant que ressource ARM, consultez :

Dans ce tutoriel, vous allez découvrir comment utiliser Azure Blueprints pour effectuer des tâches courantes liées à la création, à la publication et à l’affectation d’un blueprint dans votre organisation. Cette compétence vous permet de définir des modèles courants pour développer des configurations réutilisables et déployables rapidement, en fonction des modèles, de la stratégie et de la sécurité d’Azure Resource Manager (ARM).

Prérequis

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Si vous n’avez encore jamais utilisé Azure Blueprints, inscrivez le fournisseur de ressources via Azure CLI avec az provider register --namespace Microsoft.Blueprint.

Azure Cloud Shell

Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.

Pour démarrer Azure Cloud Shell :

Option Exemple/Lien
Sélectionnez Essayer dans le coin supérieur droite d’un bloc de codes ou de commandes. La sélection de Essayer ne copie pas automatiquement le code ni la commande dans Cloud Shell. Capture d’écran présentant un exemple d’essai pour Azure Cloud Shell.
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. Bouton permettant de lancer Azure Cloud Shell.
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. Capture d’écran présentant le bouton Cloud Shell dans le portail Azure.

Pour utiliser Azure Cloud Shell :

  1. Démarrez Cloud Shell.

  2. Sélectionnez le bouton Copier sur un bloc de codes (ou un bloc de commandes) pour copier le code ou la commande.

  3. Collez le code ou la commande dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux ou en sélectionnant Cmd+Maj+V sur macOS.

  4. Sélectionnez Entrée pour exécuter le code ou la commande.

Ajouter l’extension Blueprint

Pour permettre à Azure CLI de gérer les définitions et les affectations de blueprints, vous devez ajouter l’extension. Cette extension fonctionne partout où vous pouvez utiliser Azure CLI. Ceci comprend bash sur Windows 10, Cloud Shell (à la fois la version autonome et celle à l’intérieur du portail), l’image Docker d’Azure CLI ou une extension installée localement.

  1. Vérifiez que la version la plus récente d’Azure CLI est installée (2.0.76 au minimum). S’il n’est pas installé, suivez ces instructions.

  2. Dans l’environnement Azure CLI choisi, vous devez importer l’extension avec la commande suivante :

    # Add the Blueprint extension to the Azure CLI environment
    az extension add --name blueprint
    
  3. Vérifiez que l’extension a été installée et qu’il s’agit de la version attendue (au moins 0.1.0) :

    # Check the extension list (note that you might have other extensions installed)
    az extension list
    
    # Run help for extension options
    az blueprint -h
    

Créer un blueprint

La première étape de la définition d’un modèle standard à des fins de conformité est de composer un blueprint à partir des ressources disponibles. Vous allez créer un blueprint nommé MyBlueprint pour configurer les attributions de rôles et de stratégies de l’abonnement. Ensuite, vous ajoutez un groupe de ressources, un modèle ARM et une attribution de rôle sur le groupe de ressources.

Notes

Quand vous utilisez Azure CLI, l’objet blueprint est créé en premier. Pour chaque artefact à ajouter qui a des paramètres, vous définissez ces paramètres à l’avance sur le blueprint initial.

  1. Créez l’objet blueprint initial. Le paramètre parameters prend un fichier JSON qui inclut tous les paramètres au niveau du blueprint. Vous définissez les paramètres lors de l’attribution, et ils sont utilisés par les artefacts que vous ajoutez dans les étapes ultérieures.

    • Fichier JSON - blueprintparms.json

      {
         "storageAccountType": {
             "type": "string",
             "defaultValue": "Standard_LRS",
             "allowedValues": [
                 "Standard_LRS",
                 "Standard_GRS",
                 "Standard_ZRS",
                 "Premium_LRS"
             ],
             "metadata": {
                 "displayName": "storage account type.",
                 "description": null
             }
         },
         "tagName": {
             "type": "string",
             "metadata": {
                 "displayName": "The name of the tag to provide the policy assignment.",
                 "description": null
             }
         },
         "tagValue": {
             "type": "string",
             "metadata": {
                 "displayName": "The value of the tag to provide the policy assignment.",
                 "description": null
             }
         },
         "contributors": {
             "type": "array",
             "metadata": {
                 "description": "List of AAD object IDs that is assigned Contributor role at the subscription",
                 "strongType": "PrincipalId"
             }
         },
         "owners": {
             "type": "array",
             "metadata": {
                 "description": "List of AAD object IDs that is assigned Owner role at the resource group",
                 "strongType": "PrincipalId"
             }
         }
      }
      
    • Commande Azure CLI

      # Login first with az login if not using Cloud Shell
      
      # Create the blueprint object
      az blueprint create \
         --name 'MyBlueprint' \
         --description 'This blueprint sets tag policy and role assignment on the subscription, creates a ResourceGroup, and deploys a resource template and role assignment to that ResourceGroup.' \
         --parameters blueprintparms.json
      

      Notes

      Utilisez le nom de fichier blueprint.json quand vous importez vos définitions de blueprint. Ce nom de fichier est utilisé quand vous appelez az blueprint import.

      Par défaut, l’objet blueprint est créé dans l’abonnement par défaut. Pour spécifier le groupe d’administration, utilisez le paramètre managementgroup. Pour spécifier l’abonnement, utilisez le paramètre subscription.

  2. Ajoutez le groupe de ressources pour les artefacts de stockage à la définition.

    az blueprint resource-group add \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'storageRG' \
       --description 'Contains the resource template deployment and a role assignment.'
    
  3. Ajoutez une attribution de rôle à l’abonnement. Dans l’exemple suivant, les identités de principal ayant reçu le rôle spécifié sont configurées avec un paramètre qui est défini durant l’affectation du blueprint. Cet exemple utilise le rôle intégré Contributor avec le GUID b24988ac-6180-42a0-ab88-20f7382dd24c.

    az blueprint artifact role create \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'roleContributor' \
       --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c' \
       --principal-ids "[parameters('contributors')]"
    
  4. Ajoutez une attribution de stratégie à l’abonnement. Cet exemple utilise la stratégie intégrée Apply tag and its default value to resource groups avec le GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Fichier JSON - artifacts\policyTags.json

      {
         "tagName": {
            "value": "[parameters('tagName')]"
         },
         "tagValue": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Commande Azure CLI

      az blueprint artifact policy create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'policyTags' \
         --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \
         --display-name 'Apply tag and its default value to resource groups' \
         --description 'Apply tag and its default value to resource groups' \
         --parameters artifacts\policyTags.json
      

      Notes

      Quand vous utilisez az blueprint sur un Mac, remplacez \ par / pour les valeurs de paramètre qui incluent le chemin. Dans ce cas, la valeur de parameters devient artifacts/policyTags.json.

  5. Ajoutez une autre affectation de stratégie pour l’étiquette de stockage (en réutilisant storageAccountType_ parameter) au niveau de l’abonnement. Cet artefact d’affectation de stratégie supplémentaire montre qu’un paramètre défini sur le blueprint peut être utilisé par plusieurs artefacts. Dans l’exemple, vous utilisez storageAccountType pour définir une étiquette sur le groupe de ressources. Cette valeur fournit des informations sur le compte de stockage que vous créez à l’étape suivante. Cet exemple utilise la stratégie intégrée Apply tag and its default value to resource groups avec le GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Fichier JSON - artifacts\policyStorageTags.json

      {
         "tagName": {
            "value": "StorageType"
         },
         "tagValue": {
            "value": "[parameters('storageAccountType')]"
         }
      }
      
    • Commande Azure CLI

      az blueprint artifact policy create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'policyStorageTags' \
         --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \
         --display-name 'Apply storage tag to resource group' \
         --description 'Apply storage tag and the parameter also used by the template to resource groups' \
         --parameters artifacts\policyStorageTags.json
      

      Notes

      Quand vous utilisez az blueprint sur un Mac, remplacez \ par / pour les valeurs de paramètre qui incluent le chemin. Dans ce cas, la valeur de parameters devient artifacts/policyStorageTags.json.

  6. Ajoutez un modèle sous le groupe de ressources. Le paramètre template d’un modèle ARM inclut les composants JSON normaux du modèle. Le modèle réutilise également les paramètres de blueprint storageAccountType, tagName et tagValue en passant chacun au modèle. Les paramètres de blueprint sont accessibles au modèle en utilisant le paramètre parameters, et dans le fichier JSON, cette paire clé/valeur est utilisée pour injecter la valeur. Les noms des paramètres du blueprint et du modèle peuvent être les mêmes.

    • Fichier de modèle ARM JSON - \artifacts\templateStorage.json

      {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
              "storageAccountTypeFromBP": {
                  "type": "string",
                  "metadata": {
                      "description": "Storage Account type"
                  }
              },
              "tagNameFromBP": {
                  "type": "string",
                  "defaultValue": "NotSet",
                  "metadata": {
                      "description": "Tag name from blueprint"
                  }
              },
              "tagValueFromBP": {
                  "type": "string",
                  "defaultValue": "NotSet",
                  "metadata": {
                      "description": "Tag value from blueprint"
                  }
              }
          },
          "variables": {
              "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
          },
          "resources": [{
              "type": "Microsoft.Storage/storageAccounts",
              "name": "[variables('storageAccountName')]",
              "apiVersion": "2016-01-01",
              "tags": {
                  "[parameters('tagNameFromBP')]": "[parameters('tagValueFromBP')]"
              },
              "location": "[resourceGroup().location]",
              "sku": {
                  "name": "[parameters('storageAccountTypeFromBP')]"
              },
              "kind": "Storage",
              "properties": {}
          }],
          "outputs": {
              "storageAccountSku": {
                  "type": "string",
                  "value": "[variables('storageAccountName')]"
              }
          }
      }
      
    • Fichier de paramètres de modèle ARM JSON - \artifacts\templateStorageParams.json

      {
         "storageAccountTypeFromBP": {
            "value": "[parameters('storageAccountType')]"
         },
         "tagNameFromBP": {
            "value": "[parameters('tagName')]"
         },
         "tagValueFromBP": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Commande Azure CLI

      az blueprint artifact template create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'templateStorage' \
         --template artifacts\templateStorage.json \
         --parameters artifacts\templateStorageParams.json \
         --resource-group-art 'storageRG'
      

      Notes

      Quand vous utilisez az blueprint sur un Mac, remplacez \ par / pour les valeurs de paramètre qui incluent le chemin. Dans ce cas, la valeur de template devient artifacts/templateStorage.json, et parameters devient artifacts/templateStorageParams.json.

  7. Ajoutez une attribution de rôle sous le groupe de ressources. Comme pour l’entrée d’attribution de rôle précédente, l’exemple suivant utilise l’identificateur de définition pour le rôle Owner et lui fournit un paramètre différent à partir du blueprint. Cet exemple utilise le rôle intégré Owner avec le GUID 8e3af657-a8ff-443c-a75c-2fe8c4bcb635.

    az blueprint artifact role create \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'roleOwner' \
       --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635' \
       --principal-ids "[parameters('owners')]" \
       --resource-group-art 'storageRG'
    

Publier un blueprint

Maintenant que vous avez ajouté les artefacts au blueprint, il est temps de le publier. Une fois publié, un blueprint peut être affecté à un abonnement.

az blueprint publish --blueprint-name 'MyBlueprint' --version '{BlueprintVersion}'

La valeur de {BlueprintVersion} est une chaîne de lettres, de chiffres et de traits d’union (sans espaces ni de caractères spéciaux). La longueur maximale est de 20 caractères. Utilisez un nom unique et significatif, comme v20200605-135541.

Affecter un blueprint

Une fois que vous avez publié un blueprint en utilisant Azure CLI, il peut être affecté à un abonnement. Affectez le blueprint que vous avez créé à l’un des abonnements de votre hiérarchie de groupes d’administration. Si le blueprint est enregistré dans un abonnement, il ne peut être attribué qu’à cet abonnement. Le paramètre blueprint-name spécifie le blueprint à affecter. Pour fournir les paramètres name, location, identity, lock et blueprint, utilisez les paramètres Azure CLI correspondants sur la commande az blueprint assignment create ou fournissez-les dans le fichier JSON des paramètres.

  1. Exécutez le déploiement du blueprint en l’affectant à un abonnement. Comme les paramètres contributors et owners nécessitent l’octroi de l’attribution de rôle à un tableau de objectIds des principaux, utilisez l’API Graph d’Azure Active Directory pour collecter les objectIds à utiliser dans les parameters pour vos propres utilisateurs, groupes ou principaux de service.

    • Fichier JSON - blueprintAssignment.json

      {
         "storageAccountType": {
             "value": "Standard_GRS"
         },
         "tagName": {
             "value": "CostCenter"
         },
         "tagValue": {
             "value": "ContosoIT"
         },
         "contributors": {
             "value": [
                 "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
                 "38833b56-194d-420b-90ce-cff578296714"
             ]
         },
         "owners": {
             "value": [
                 "44254d2b-a0c7-405f-959c-f829ee31c2e7",
                 "316deb5f-7187-4512-9dd4-21e7798b0ef9"
             ]
         }
      }
      
    • Commande Azure CLI

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      
    • Identité managée affectée par l’utilisateur

      Une affectation de blueprint peut également utiliser une identité managée affectée par l’utilisateur. Dans ce cas, le paramètre identity-type est défini sur UserAssigned, et le paramètre user-assigned-identities spécifie l’identité. Remplacez {userIdentity} par le nom de l’identité managée affectée par l’utilisateur.

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --identity-type UserAssigned \
         --user-assigned-identities {userIdentity} \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      

      L’identité managée affectée par l’utilisateur peut être dans n’importe quel abonnement et groupe de ressources pour lesquels l’utilisateur qui affecte le blueprint a les autorisations nécessaires.

      Important

      Azure Blueprints ne gère pas l’identité managée affectée par l’utilisateur. Les utilisateurs doivent attribuer des rôles et autorisations suffisants. À défaut, l’affectation du blueprint échouera.

Nettoyer les ressources

Vous pouvez supprimer un blueprint d’un abonnement. La suppression est souvent effectuée lorsque les ressources d’artefact ne sont plus nécessaires. Quand un blueprint est supprimé, les artefacts affectés dans le cadre de ce blueprint sont abandonnés. Pour supprimer une affectation de blueprint, utilisez la commande az blueprint assignment delete :

az blueprint assignment delete --name 'assignMyBlueprint'

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé, affecté et supprimé un blueprint avec Azure CLI. Pour plus d’informations sur Azure Blueprints, consultez l’article concernant le cycle de vie des blueprints.