Terraform permet le déploiement d’infrastructure sur Azure DevOps Pipeline. Découvrez tout ce que vous devez savoir sur cette alternative au Azure Ressource Manager, et quels sont les points forts de cette solution !
Chaque fournisseur de cloud a sa propre méthode de déploiement d’infrastructure. Par exemple, Microsoft Azure utilise le langage de configuration JSON tandis que AWS et Google Cloud Platform exploitent le YAML.À l’heure où les entreprises utilisent de multiples plateformes cloud, ces spécificités propres à chaque cloud peuvent être contraignantes. Heureusement, Hashicorp remédie à ce problème avec Terraform.
Ce logiciel d’Infrastructure en tant que Code (IaC) open source permet le déploiement et la gestion d’infrastructure sur tous les principaux clouds publics comme AWS, Azure, Google Cloud Platform, Oracle Cloud, VMware vSphere ou Alibaba.
La configuration d’infrastructure s’effectue avec le langage Hashicorp Configuration Language (HCL). Les utilisateurs peuvent donc se contenter d’apprendre un seul langage pour tous les clouds publics. Il suffit de décrire l’état souhaité de l’infrastructure dans un fichier de configuration, et Terraform se charge du reste. Ainsi, ce logiciel permet de créer modifier et supprimer très facilement des ressources informatiques.
Comment déployer des ressources sur Azure DevOps avec Terraform ?
Pour déployer des ressources sur Azure DevOps Pipelines avec Terraform, vous aurez besoin d’un compte Microsoft Azure avec Azure DevOps. Téléchargez et installez Terraform sur la machine servant à exécuter les pipelines Azure DevOps, ou utilisez une image de machine virtuelle pré-configurée avec Terraform.
Il faut ensuite créer un projet sur Azure DevOps, et créer un dossier dans les dépôts pour télécharger le fichier Terraform de déploiement de ressources. Il s’agit du fichier décrivant l’état souhaité de l’infrastructure. Vous devrez ensuite créer un nouveau pipeline de relaxe et ajouter le fichier Terraform en guise d’artefact depuis le dépôt Azure.
L’étape suivante est d’ajouter les étapes de build d’exécution Terraform Init, Plan et Apply. La commande Init permet d’initialiser l’infrastructure, la commande Plan de planifier les modifications à apporter à l’infrastructure et les actions nécessaires pour atteindre l’état désiré, et la commande Apply d’appliquer ces modifications.
De préférence, stockez le fichier de configuration Terraform dans un dépôt Git. Il faudra alors configurer le pipeline Azure DevOps, afin qu’il utilise ce dépôt Git. C’est ce qui permet de suivre les changements apportés à l’infrastructure de façon centralisée. Vous pourrez aussi collaborer sur la configuration de l’infrastructure avec une équipe.
En revanche, évitez d’inclure les informations sensibles comme les identifiants d’accès et mots de passe dans le fichier de configuration Terraform. Il est préférable de configurer des variables d’environnement dans Azure DevOps, afin de les protéger.
Terraform vs Azure Ressource Manager
Pour la configuration d’infrastructure sur le cloud Microsoft Azure, il est possible d’utiliser Terraform en guise d’alternative au Azure Ressource Manager proposé par défaut sur la plateforme. Ces deux outils présentent plusieurs différences.
Tout d’abord, Terraform utilise le langage HCL tandis que Azure Ressource Manager repose sur le langage JSON pour la définition d’infrastructure. Sur Terraform, la dépendance entre les ressources est définie automatiquement alors qu’elle doit être précisée explicitement sur les templates ARM.
Par ailleurs, Terraform utilise des variables et les templates Azure Ressource Manager des paramètres. Dans les deux cas, il s’agit des valeurs entrées par l’utilisateur pour le déploiement et définies comme un fichier séparé.
Les valeurs définies au sein du template sont appelées variables locales sur Terraform et variables sur ARM. Pour le déploiement d’une ressource particulière, Terraform utilise des modules et Azure des modèles imbriqués.
Astuces et meilleures pratiques
Pour utiliser Terraform et Azure DevOps Pipelines de façon optimale, vous pouvez appliquer plusieurs pratiques recommandées. Tout d’abord, utilisez le YAML plutôt que les pipelines classiques pour la création de nouveaux pipelines.
En revanche, mieux vaut utiliser l’invite de commande que les tâches YAML. Ceci vous permettra de mieux comprendre le fonctionnement de Terraform. Veillez aussi à utiliser la dernière version en date de Terraform.
Dans la documentation de Terraform, il est aussi recommandé d’utiliser la configuration partielle et d’utiliser un Principal de Service ou une Identité de Service Gérée pour l’authentification. Ce second point concerne l’exécution non-interactive de Terraform, par exemple sur un serveur CI. En revanche, en cas d’exécution locale, vous pouvez utiliser le CLI Azure.
Veillez à conserver les variables de pipeline sous forme de secrets, afin qu’elles soient chiffrées. Pour aller plus loin, vous pouvez utiliser le service Azure Key Vault pour encore plus de sécurité et la capacité de réutiliser les secrets.
Enfin, créez un rôle custom pour le principal de service utilisé par Terraform. Ceci simplifiera la configuration des permissions comme la politique d’accès au Key Vault, sans avoir à donner les permissions du rôle de propriétaire au principal de service. Il est notamment important de ne pas donner à Terraform la permission d’effacer des infrastructures, par souci de conformité aux règles de protection des données.
Comment maîtriser Terraform et Azure DevOps ?
Afin de maîtriser Terraform, Azure et tous les meilleurs outils DevOps, vous pouvez choisir les formations DataScientest. Notre cursus Data Engineer vous permettra d’apprendre les meilleures pratiques et le maniement des logiciels et solutions.
Au fil des différents modules, vous découvrirez notamment la programmation en Python, le CI/CD avec Git, les bases de données et le Big Data, le Machine Learning, ou encore l’automatisation et le déploiement avec Docker et Kubernetes.
Toutes nos formations s’effectuent intégralement à distance, en BootCamp ou en Formation Continue. À la fin du parcours, vous aurez toutes les compétences requises pour exercer le métier de Data Engineer et recevrez une certification des Mines ParisTech PSL Executive Education. Vous pourrez aussi valider le bloc 3 de la certification RNCP 36129 « Chef de projet en intelligence artificielle », et préparer le passage de la certification Microsoft AZ-900.
Concernant le financement, précisons que notre organisme est éligible au Compte Personnel de Formation (CPF). Découvrez DataScientest dès à présent !
Vous savez tout sur Terraform et Azure DevOps Pipelines. Pour plus d’informations sur le même sujet, découvrez notre dossier complet sur Azure DevOps et notre dossier sur Terraform.