Appliquer un workflow automatisé
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 :
- 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éesstdout
,stderr
etexitcode
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.
- 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 :
- Accédez à la page Pipelines, sélectionnez le pipeline approprié, puis sélectionnez Modifier.
- Recherchez les variables définies pour ce pipeline.
- Ajoutez ou mettez à jour la variable.
- Pour marquer la variable comme secrète, sélectionnez Garder cette valeur secrète.
- 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.