Appliquer un workflow automatisé

Effectué

Dans cette unité, vous allez découvrir les outils de workflow automatisé et leur intégration à Terraform et Azure.

Présentation de GitHub Actions

En tant que gestionnaire d’infrastructures, vous avez besoin que vos workflows de build et de déploiement utilisent la même gestion de versions que votre projet.

À l’aide de GitHub Actions, vous pouvez exécuter un processus d’intégration continue et livraison continue (CI/CD) lié à vos référentiels GitHub.

GitHub Actions vous permet de générer, tester et déployer votre code directement à partir de GitHub. Vous pouvez également attribuer des révisions de code, gérer des branches et trier des problèmes.

Composants de GitHub Actions

Nous allons décrire les différents composants de GitHub Actions, comme indiqué dans le diagramme suivant :

Diagramme montrant la relation entre les workflows GitHub Actions et leurs travaux, étapes et actions de composants.

  • Workflow : Déclenché par certains événements ou activités, un workflow est une collection de travaux et d’étapes qui automatisent les tâches de cycle de vie du développement de logiciels.
  • Travail : Ensemble d’étapes qui s’exécutent sur un exécuteur.
  • Étape : une tâche qui peut exécuter une ou plusieurs commandes ou actions. Chaque étape est constituée d’actions individuelles qui s’exécutent après un événement spécifique, par exemple, une demande de tirage.
  • Action : Commandes autonomes qui peuvent être combinées dans des étapes. Plusieurs étapes peuvent être combinées pour créer un travail. Les actions individuelles sont des scripts empaquetés qui permettent d’automatiser les tâches de développement logiciel. Pour créer un workflow, ajoutez des actions à un fichier YAML dans le répertoire .github/workflows de votre référentiel GitHub.

Action GitHub Terraform

L’action hashicorp/setup-terraform configure l’interface de ligne de commande Terraform dans votre workflow GitHub Actions en :

  • téléchargeant une version spécifique de l’interface de ligne de commande Terraform et en l’ajoutant au PATH.
  • configurant le fichier config de l’interface de ligne de commande Terraform avec un nom d’hôte Terraform Cloud ou Enterprise et un jeton d’API.
  • installant un script wrapper pour wrapper les appels ultérieurs du binaire terraform et exposer son code STDOUT, STDERR et de sortie en tant que sorties appelées stdout, stderr et exitcode respectivement.

Authentifier GitHub Actions avec Azure

Terraform prend en charge plusieurs options d’authentification auprès d’Azure :

  • Lorsque vous utilisez Terraform de manière interactive, nous vous recommandons de vous authentifier via un compte Microsoft.
  • Quand vous utilisez Terraform à partir du code ou de l’automatisation, nous vous recommandons de vous authentifier par le biais d’un principal de service Azure.

Un principal de service est une identité qui s’utilise avec des applications, des services hébergés et des outils automatisés pour accéder à des ressources Azure.

Étapes suivantes

Dans l’unité suivante, nous allons configurer un exemple de projet et utiliser GitHub Actions avec Terraform pour le déployer sur Azure.

Concepts clés pour démarrer dans Azure Pipelines

Découvrons ensemble les différents composants d’un pipeline Azure.

Diagramme des concepts et composants clés d’un pipeline Azure.

  • Un déclencheur indique à un pipeline de s’exécuter.
  • Chaque pipeline comporte une ou plusieurs phases. Un pipeline peut être déployé sur un ou plusieurs environnements.
  • Une phase est une façon d’organiser un travail dans un pipeline, et chaque phase peut se composer d’un ou de plusieurs travaux.
  • Chaque travail s’exécute sur un seul agent. Un travail peut également s’exécuter sans agent.
  • Chaque agent exécute un travail qui comporte une ou plusieurs étapes.
  • Une étape peut être une tâche ou un script ; c’est le plus petit composant d’un pipeline.
  • Une tâche est un script prépackagé qui effectue une action, comme l’appel d’une API REST ou la publication d’un artefact de build.
  • Un artefact est une collection de fichiers ou de packages publiés par une exécution.

Conseil

Pour obtenir des informations plus détaillées sur les différents composants de pipeline et leur utilisation, consultez les liens fournis dans la section Résumé.

Tâches Terraform pour Azure Pipelines

Quand vous exécutez des commandes qui interagissent avec Azure (par exemple, plan, apply et destroy), la tâche utilise une connexion de service Azure pour autoriser les opérations sur l’abonnement cible. Pour vous connecter à Azure, la méthode recommandée est de lier la connexion de service à un principal de service Azure. Un principal de service Azure est une identité que vous créez en vue de l’utiliser avec des applications, des services hébergés et des outils automatisés pour accéder à des ressources Azure.

L’extrait de code YAML suivant utilise le fournisseur Terraform de pipeline Azure azurerm. Une connexion de service est spécifiée avec l’entrée environmentServiceNameAzureRM :

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Conseil

Si vous utilisez azurerm comme fournisseur Terraform de pipeline Azure, vous devez également fournir une connexion de service et un conteneur de stockage à utiliser avec le back-end state de Terraform.

Passage de paramètres

Il existe plusieurs méthodes pour passer des paramètres à des commandes Terraform. Les variables sont pratiques pour fournir les bits de données clés dans différentes parties du pipeline.

Vous pouvez définir une variable pour un pipeline de build en effectuant ces étapes :

  1. Accédez à la page Pipelines, sélectionnez le pipeline approprié, puis sélectionnez Modifier.
  2. Recherchez les variables définies pour ce pipeline.
  3. Ajoutez ou mettez à jour la variable.
  4. Pour marquer la variable comme secrète, sélectionnez Garder cette valeur secrète.
  5. Enregistrez le pipeline.

Sortie Terraform vers des variables de pipeline

La tâche TerraformCLI prend en charge l’exécution de la commande Terraform output. À l’exécution de la CLI, les variables du pipeline sont créées à partir de chaque variable de sortie émise à partir de la commande terraform output.

Étapes suivantes

Dans l’unité suivante, nous configurerons un exemple de projet, puis nous utiliserons Azure Pipelines avec Terraform pour le déployer sur Azure.