Gérer les groupes de variables

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Cet article explique comment créer et utiliser des groupes de variables dans Azure Pipelines. Les groupes de variables stockent des valeurs et des secrets que vous pouvez passer dans un pipeline YAML ou rendre disponibles dans plusieurs pipelines d'un projet.

Les variables secrètes dans les groupes de variables sont des ressources protégées. Vous pouvez ajouter des combinaisons d’approbations, de vérifications et d’autorisations de pipeline pour limiter l’accès aux variables secrètes d’un groupe de variables. L'accès aux variables non secrètes n'est pas limité par des approbations, des vérifications ou des permissions de pipeline.

Les groupes de variables suivent le modèle de sécurité de la bibliothèque pour les rôles et les permissions.

Créer un groupe de variables

Vous pouvez créer des groupes de variables pour les exécutions du pipeline dans votre projet.

Remarque

Pour créer un groupe de variables secrètes afin de lier des secrets d'un coffre-fort de clés Azure en tant que variables, suivez les instructions à la page Lier des secrets d'un coffre-fort de clés Azure.

Vous pouvez créer un groupe de variables dans l'interface utilisateur d'Azure Pipelines.

Prérequis

Une organisation et un projet Azure DevOps dans lesquels vous avez des permissions pour créer des pipelines et des variables.

Créer le groupe de variables

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Bibliothèque dans le menu de gauche.

  2. Dans la page Bibliothèque, sélectionnez + Groupe de variables.

    Capture d'écran de l'écran Bibliothèque et du bouton Ajouter un groupe de variables.

  3. Sur la page du nouveau groupe de variables, sous Propriétés, saisissez un nom et une description facultative pour le groupe de variables.

  4. Sous Variables, sélectionnez + Ajouter, puis entrez un nom de variable et une valeur à inclure dans le groupe. Si vous souhaitez chiffrer et stocker la valeur en toute sécurité, sélectionnez l'icône de cadenas en regard de la variable.

  5. Sélectionnez + Ajouter pour ajouter chaque nouvelle variable. Lorsque vous avez fini d'ajouter des variables, sélectionnez Enregistrer.

    Capture d'écran de la configuration et de l'enregistrement d'un groupe de variables.

Vous pouvez maintenant utiliser ce groupe de variables dans les pipelines de projet.

Vous pouvez créer un groupe de variables lié à un coffre-fort de clés Azure existant et mapper les secrets Key Vault sélectionnés vers le groupe de variables. Seuls les noms des secrets sont mappés vers le groupe de variables, pas les valeurs des secrets. Les exécutions du pipeline qui sont liées au groupe variable récupèrent les dernières valeurs secrètes dans le coffre-fort.

Toute modification apportée aux secrets existants dans le coffre-fort est automatiquement mise à la disposition de tous les pipelines qui utilisent le groupe de variables. Cependant, si des secrets sont ajoutés ou supprimés du coffre-fort, les groupes de variables associés ne sont pas automatiquement mis à jour. Vous devez explicitement mettre à jour les secrets à inclure dans le groupe de variables.

Bien que Key Vault prenne en charge le stockage et la gestion des clés cryptographiques et des certifications dans Azure, l'intégration des groupes de variables Azure Pipelines ne prend en charge que le mappage des secrets de coffre-fort de clés. Les clés de chiffrement et les certificats ne sont pas pris en charge.

Remarque

Les coffres-forts de clés qui utilisent le contrôle d'accès basé sur les rôles d'Azure (Azure RBAC) ne sont pas pris en charge.

Prérequis

  • Un coffre-fort de clés Azure qui contient vos secrets. Vous pouvez créer un coffre-fort de clés en utilisant le portail Azure.
  • Une connexion au service Azure pour votre projet.

Créer le groupe de variables

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Bibliothèque>+ Groupe de variables.
  2. Sur la page Groupes de variables, entrez un nom et une description facultative pour le groupe de variables.
  3. Activez la bascule Lier les secrets d'un coffre-fort de clés Azure en tant que variables.
  4. Sélectionnez votre point de terminaison d'abonnement Azure et le nom de votre coffre-fort de clés.
  5. Autorisez Azure DevOps à accéder au coffre-fort de clés en sélectionnant Autoriser en regard du nom du coffre-fort.
  6. Sur l'écran Choisir des secrets, sélectionnez des secrets spécifiques de votre coffre-fort pour le mappage à ce groupe de variables, puis sélectionnez OK.
  7. Sélectionnez Enregistrer pour enregistrer le groupe de variables secrètes.

Capture d’écran d’un groupe de variables avec l’intégration à un coffre de clés Azure.

Remarque

Votre connexion au service Azure doit disposer au moins des permissions Obtenir et Lister sur le coffre-fort de clés, que vous pouvez autoriser dans les étapes précédentes. Vous pouvez également fournir ces permissions à partir du portail Azure en suivant les étapes suivantes :

  1. Ouvrez Paramètres pour le coffre-fort de clés, puis sélectionnez Configuration de l'accès>Voir les stratégies d'accès.
  2. Sur la page des stratégies d'accès, si votre projet Azure Pipelines n'est pas répertorié sous Applications avec au moins les permissions Obtenir et Lister, sélectionnez Créer.
  3. Sous Permissions secrètes, sélectionnez Obtenir et Lister, puis sélectionnez Suivant.
  4. Sélectionnez votre principal de service, puis sélectionnez Suivant.
  5. Sélectionnez à nouveau Suivant, vérifiez les paramètres, puis sélectionnez Créer.

Pour plus d’informations, consultez Utiliser des secrets Azure Key Vault.

Mise à jour des groupes de variables

Vous pouvez mettre à jour les groupes de variables en utilisant l'interface utilisateur Azure Pipelines.

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Bibliothèque dans le menu de gauche.
  2. Sur la page Bibliothèque, sélectionnez le groupe de variables que vous souhaitez mettre à jour. Vous pouvez également survoler la liste des groupes de variables, sélectionner l'icône Plus d'options et sélectionner Modifier dans le menu.
  3. Sur la page du groupe de variables, modifiez l'une des propriétés, puis sélectionnez Enregistrer.

Supprimer un groupe de variables

Vous pouvez supprimer des groupes de variables dans l'interface utilisateur d'Azure Pipelines.

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Bibliothèque dans le menu de gauche.
  2. Sur la page Bibliothèque, survolez le groupe de variables que vous souhaitez supprimer et sélectionnez l'icône Plus d'options.
  3. Sélectionnez Supprimer dans le menu, puis sélectionnez Supprimer dans l'écran de confirmation.

Gérer les variables dans les groupes de variables

Vous pouvez modifier, ajouter ou supprimer des variables dans des groupes de variables en utilisant l'interface utilisateur Azure Pipelines.

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Bibliothèque dans le menu de gauche.
  2. Sur la page Bibliothèque, sélectionnez le groupe de variables que vous souhaitez mettre à jour. Vous pouvez également survoler la liste des groupes de variables, sélectionner l'icône Plus d'options et sélectionner Modifier dans le menu.
  3. Sur la page du groupe de variables, vous pouvez
    • Modifier n'importe quel nom ou valeur de variable.
    • Supprimer l'une des variables en sélectionnant l'icône de la poubelle à côté du nom de la variable.
    • Changer les variables en secrètes ou non secrètes en sélectionnant l'icône de cadenas à côté de la valeur de la variable.
    • Ajoutez de nouvelles variables en sélectionnant + Ajouter.
  4. Après avoir effectué les modifications, sélectionnez Enregistrer.

Utiliser des groupes de variables dans les pipelines

Vous pouvez utiliser des groupes de variables dans les pipelines YAML ou Classic. Les modifications que vous apportez à un groupe de variables sont automatiquement disponibles pour toutes les définitions ou étapes auxquelles le groupe de variables est lié.

Utiliser les groupes de variables dans les pipelines YAML

Une fois que vous avez autorisé un pipeline YAML à utiliser un groupe de variables, vous pouvez utiliser le groupe de variables ou les variables qu'il contient dans le pipeline.

Autoriser le pipeline YAML à utiliser le groupe de variables

Si vous ne nommez que le groupe de variables dans les pipelines YAML, quiconque peut pousser du code dans votre référentiel pourrait extraire le contenu des secrets du groupe de variables. Par conséquent, pour utiliser un groupe de variables avec les pipelines YAML, vous devez autoriser le pipeline à utiliser le groupe. Les pipelines classiques peuvent utiliser des groupes de variables sans autorisation distincte.

Vous pouvez autoriser les pipelines à utiliser vos groupes de variables en utilisant l'interface utilisateur Azure Pipelines.

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Bibliothèque dans le menu de gauche.
  2. Sur la page Bibliothèque, sélectionnez le groupe de variables que vous souhaitez autoriser.
  3. Sur la page du groupe de variables, sélectionnez l'onglet Autorisations des pipelines.
  4. Dans l'écran des permissions relatives aux pipelines, sélectionnez +, puis un pipeline à autoriser. Vous pouvez également sélectionner l'icône Autres actions, sélectionner Accès libre, puis sélectionner à nouveau Accès libre pour confirmer.

La sélection d'un pipeline autorise ce pipeline à utiliser le groupe de variables. Pour autoriser un autre pipeline, sélectionnez à nouveau l'icône +. En sélectionnant Accès libre, vous autorisez tous les pipelines du projet à utiliser le groupe de variables. L'accès libre peut être une bonne option si vous n'avez pas de secrets dans le groupe.

Une autre façon d'autoriser un groupe de variables consiste à sélectionner le pipeline, à sélectionner Modifier, puis à mettre en file d'attente un build manuellement. Vous voyez une erreur d'autorisation de ressource et pouvez ensuite ajouter explicitement le pipeline en tant qu'utilisateur autorisé du groupe de variables.

Utiliser le groupe de variables dans le pipeline YAML

Pour utiliser une variable d'un groupe de variables, ajoutez une référence au nom du groupe dans votre fichier de pipeline YAML. Vous pouvez ensuite utiliser les variables du groupe de variables dans votre fichier.

variables:
- group: my-variable-group

Vous pouvez référencer plusieurs groupes de variables dans le même pipeline. Si plusieurs groupes de variables incluent la même variable, le dernier groupe de variables qui utilise la variable dans le fichier définit la valeur de la variable. Pour plus d'informations sur la préséance des variables, voir Expansion des variables.

Vous pouvez également référencer un groupe de variables dans un modèle. Le fichier modèle variables.yml suivant fait référence au groupe de variables my-variable-group. Le groupe de variables inclut une variable nommée myhello.

variables:
- group: my-variable-group

Le pipeline YAML fait référence au modèle variables.yml et utilise la variable $(myhello) du groupe de variables my-variable-group.

stages:
- stage: MyStage
  variables:
  - template: variables.yml
  jobs:
  - job: Test
    steps:
    - script: echo $(myhello)

Utiliser les groupes de variables dans les pipelines YAML

Vous accédez aux valeurs des variables d'un groupe de variables lié de la même manière que vous accédez aux variables que vous définissez dans le pipeline. Par exemple, pour accéder à la valeur d'une variable nommée customer dans un groupe de variables lié au pipeline, vous pouvez utiliser $(customer) dans un paramètre de tâche ou un script.

Si vous utilisez à la fois des variables autonomes et des groupes de variables dans votre fichier pipeline, utilisez la syntaxe name-value pour les variables autonomes.

variables:
- group: my-variable-group
- name: my-standalone-variable
  value: 'my-standalone-variable-value'

Pour référencer une variable dans un groupe de variables, vous pouvez utiliser la syntaxe macro ou une expression d'exécution. Dans les exemples suivants, le groupe my-variable-group a une variable nommée myhello.

Pour utiliser une expression d'exécution :

variables:
- group: my-variable-group
- name: my-passed-variable
  value: $[variables.myhello]
- script: echo $(my-passed-variable)

Pour utiliser la syntaxe macro :

variables:
- group: my-variable-group

steps:
- script: echo $(myhello)

Vous ne pouvez pas accéder aux variables secrètes, y compris les variables chiffrées et les variables du Key Vault, directement dans les scripts. Vous devez transmettre ces variables en tant qu'arguments à une tâche. Pour plus d'informations, voir Variables secrètes.

Utiliser des groupes de variables dans les pipelines classiques

Les pipelines classiques peuvent utiliser des groupes de variables sans autorisation distincte. Pour utiliser un groupe de variables :

  1. Ouvrez votre pipeline classique.

  2. Sélectionnez Variables>Groupes de variables, puis Lier un groupe de variables.

  3. Dans un pipeline de build, vous voyez une liste des groupes disponibles. Liez un groupe de variables au pipeline. Toutes les variables du groupe peuvent être utilisées dans le pipeline.

    Dans un pipeline de validation, vous voyez également une liste déroulante des étapes du pipeline. Liez le groupe de variables au pipeline lui-même ou à une ou plusieurs étapes spécifiques du pipeline de validation. Si vous liez le groupe de variables à une ou plusieurs étapes, les variables du groupe de variables sont limitées à ces étapes et ne sont pas accessibles dans les autres étapes de la version.

    Capture d'écran montrant la liaison d'un groupe de variables.

Lorsque vous définissez une variable avec le même nom dans plusieurs champs d'application, la priorité suivante est utilisée, la plus élevée en premier :

  1. Variable définie au moment de la mise en file d’attente
  2. Variable définie dans le pipeline
  3. Variable définie dans le groupe de variables

Pour plus d'informations sur la préséance des variables, voir Expansion des variables.

Remarque

Les variables de différents groupes liés à un pipeline dans la même étendue (par exemple un travail ou une phase) sont en conflit et le résultat peut être imprévisible. Veillez à utiliser des noms de variables différents dans tous vos groupes de variables.