Connexion d’Azure DevOps à Terraform Cloud

Connexion d’Azure DevOps à Terraform Cloud

Pour connecter Azure DevOps à Terraform Cloud dans le but de lancer des pipelines depuis Azure DevOps ou Terraform Cloud vers Azure il faut effectuer quelque configuration sur Azure, Azure Cloud et sur Terraform Cloud. Nous partons du postulat selon lequel vous avez déjà créé la connexion entre Azure DevOps et Azure.

Configuration d’Azure

Nous allons commencer par configurer Azure du moins il faut juste généré un mot de passe sur notre service de connexion. Connectez vous sur Azure DevOps. Dans la page principale de votre projet cliqué sur Project Settings ensuite sur Service de connections et enfin sur le nom du Service de connexion que vous voulez utiliser et cliquer sur Manage Service Principal.

Il vous ouvre la page de gestion de l’application qui représente votre service de connexion? Il faut noter l’Application (Client) ID car cette valeur devra être renseignée sur Terraform Cloud dans la variable ARM_CLIENT_ID. Copier aussi la valuer Directory (tenant) ID qui sera utilisé dans terraform comme ARM_TENANT_ID. Cliquer ensuite sur Certificat & secrets.

Une fois sur Certificat & secrets, cliquer sur New client secret, ajouter une description et cliquer enfin sur Add.

Pensez à copier la colonne value de la clé qui est générée car c’est cela qui sera renseigné dans la variable ARM_CLIENT_SECRET de terraform Cloud. Cette clé n’est affichée que lors de sa création.

Configuration de Terraform Cloud

Nous allons commencer par créer une team. Une fois connecté sur Terraform cloud cliquer sur Settings

Cliquer ensuite sur Teams, indiquer le nom de la Team et cliquer sur Create Team

Ensuite tous en bas de la page de configuration de la team que vous venez de créer, ajouter les utilisateurs et cliquer ensuite sur Create a team token. Le Token qui est créé sera utilisé dans Azure DevOps pour se connecter à Terraform cloud, ainsi il aura uniquement les droits attribués au groupe auquel appartient le Token. 

Copier et conserver le Token car nous en aurons besoin sur Azure DevOps pour renseigner la variable TF_TOKEN_app_terraform_io dans notre pipeline. C’est cette variable qui dit à Terraform sur Azure DevOps de se connecter au site app.terraform.io en utilisant le contenu de la variable comme Token. 

On vas maintenant créer un WorkSpaces pour cela il faut revenir à la vue principale des Workspaces en cliquant sur Workspaces en haut à gauche.  Cliquer ensuite en haut à droite sur New et enfin sur Workspace

Choisir ensuite le type de Workflow que vous aurez. Dans notre cas nous souhaitons juste conserver nos TF state sur terraform Cloud mais la pipeline devra être entièrement contrôlé sur azure donc nous allons choisir CLI-driven workflow.

Indiquer ensuite le Nom du WorkSpace, choisissez le Project auquel il est rattaché et cliquer enfin sur Create workspace

Donner ensuite les droits sur votre Workspace à la Team que vous venez de créer. Depuis la vue principale de votre Workspace, cliquer sur Settings

Choisir la Team 

Pour l’exécution et la création de ressource depuis Azure DevOps vous pouvez donner les droits d’écriture.

La liaison avec Azure DevOps sera assuré côté Terraform Cloud par les 4 variables suivantes:

ARM_SUBSCRIPTION_ID       Votre souscription
ARM_TENANT_ID                  Votre tenant ID
ARM_CLIENT_SECRET           Mot de passe récupéré sur le service de connexion créé pour Azure Devops
ARM_CLIENT_ID                    Application (client) ID du service de connexion créé pour Azure Devops

Ses variables permettent à Terraform Cloud de se connecter au bon tenant avec les bons droits pour exécuter dans actions sur Azure. Depuis la vue principale de votre Workspace, cliquer sur Variables à gauche et créer les 4 variables suivantes avec pour catégorie variable d’environnement :

Maintenant vous pouvez simplement créer et lancer vos pipeline depuis Azure DevOps et sauvegarder vos TFState Terraform sur Terraform Cloud

joel

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.