Terraform sur Azure
Configurez le fournisseur Terraform AzureRM, rédigez un plan d’infrastructure de base et déterminez quand privilégier Terraform aux outils ARM ou Bicep natifs.
Terraform sur Azure est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu’est-ce que Terraform et pourquoi Azure ?
Terraform est un outil open source d’Infrastructure as Code développé par HashiCorp. Contrairement à Bicep, Terraform est indépendant des fournisseurs cloud : une seule base de code Terraform peut gérer simultanément des ressources sur Azure, AWS, GCP et de nombreux autres fournisseurs. Sur Azure, Terraform utilise le fournisseur AzureRM pour interagir avec l’API ARM, ce qui en fait un choix populaire pour les organisations multicloud.
Le fournisseur Terraform AzureRM
Le fournisseur AzureRM est un module d’extension que Terraform télécharge et utilise pour traduire la configuration Terraform en appels à l’API ARM. Il est géré par HashiCorp et Microsoft et constitue la méthode officielle pour gérer des ressources Azure avec Terraform. Configurez le fournisseur avec l’ID de votre abonnement et votre méthode d’authentification, puis exécutez terraform init pour le télécharger.
# main.tf — configure the AzureRM provider
terraform {
required_providers {
azurerm = {
source = 'hashicorp/azurerm'
version = '~> 3.0'
}
}
}
provider 'azurerm' {
features {}
subscription_id = var.subscription_id
}Structure des fichiers Terraform
Un projet Terraform Azure classique est réparti entre plusieurs fichiers .tf : main.tf contient les déclarations de ressources, variables.tf définit les variables d’entrée, outputs.tf définit les valeurs de sortie et terraform.tfvars fournit les valeurs des variables pour un environnement donné. Terraform charge automatiquement tous les fichiers .tf du répertoire actuel ; leur répartition en plusieurs fichiers vise donc uniquement à améliorer la lisibilité.
# variables.tf
variable 'resource_group_name' {
description = 'Name of the resource group'
type = string
default = 'my-rg'
}
variable 'location' {
description = 'Azure region'
type = string
default = 'eastus'
}Déclarer des ressources Azure
Dans Terraform, vous déclarez les ressources Azure à l’aide de blocs resource. Le type de bloc est resource, suivi du type de ressource AzureRM (par exemple 'azurerm_resource_group') et d’un nom local utilisé pour la référencer dans la configuration. Les noms de propriétés dans Terraform utilisent la notation snake_case, contrairement aux notations camelCase ou PascalCase utilisées dans ARM JSON.
# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
name = var.resource_group_name
location = var.location
}
resource 'azurerm_storage_account' 'storage' {
name = 'mystorageaccount'
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = 'Standard'
account_replication_type = 'LRS'
tags = {
environment = 'dev'
}
}Le processus Terraform : Init, Plan, Apply
Le processus Terraform principal comporte trois étapes. terraform init télécharge le fournisseur AzureRM et configure le backend. terraform plan compare votre configuration à l’état actuel et affiche les différences concernant ce qui sera créé, modifié ou détruit, de manière similaire à what-if dans ARM. terraform apply exécute le plan et met à jour Azure pour le rendre conforme à votre configuration.
# Step 1: Initialise the project and download providers
terraform init
# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan
# Step 3: Apply the plan
terraform apply tfplan
# Destroy all managed resources
terraform destroyÉtat Terraform
Terraform gère un fichier d’état (terraform.tfstate) qui enregistre l’état actuel de toutes les ressources gérées et les associe à votre configuration. Ce fichier permet à Terraform de détecter les divergences entre la configuration et les ressources présentes dans Azure. Dans les environnements d’équipe, stockez l’état à distance dans un Azure Storage Account (un backend Terraform) afin que tous les membres de l’équipe partagent le même fichier d’état.
# Configure remote state in Azure Blob Storage
terraform {
backend 'azurerm' {
resource_group_name = 'tfstate-rg'
storage_account_name = 'tfstateaccount'
container_name = 'tfstate'
key = 'prod.terraform.tfstate'
}
}S’authentifier auprès d’Azure dans Terraform
Terraform prend en charge plusieurs méthodes d’authentification pour Azure. Lors du développement local, utilisez az login (authentification Azure CLI) : Terraform récupère automatiquement les informations d’identification. Dans les pipelines d’intégration et de déploiement continus, utilisez un Service Principal avec un secret client ou un certificat, transmis par des variables d’environnement. Pour les agents ou machines virtuelles hébergés dans Azure, utilisez une identité managée afin de bénéficier de l’authentification la plus sécurisée, sans secret.
# Option 1: Azure CLI (local dev)
az login
terraform plan
# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform planModules Terraform pour la réutilisation
Comme les modules Bicep, les modules Terraform vous permettent de regrouper et de réutiliser des modèles d’infrastructure. Un module est un répertoire contenant des fichiers .tf. Vous le référencez avec un bloc module, lui transmettez des entrées via des variables et utilisez ses sorties. Le Terraform Registry héberge des centaines de modules Azure créés par la communauté ou vérifiés, que vous pouvez utiliser directement, comme le module réseau AzureRM.
# Use a module from the Terraform Registry
module 'vnet' {
source = 'Azure/vnet/azurerm'
version = '4.0.0'
resource_group_name = azurerm_resource_group.main.name
vnet_location = azurerm_resource_group.main.location
use_for_each = true
address_space = ['10.0.0.0/16']
subnet_prefixes = ['10.0.1.0/24', '10.0.2.0/24']
subnet_names = ['web', 'app']
}Quand choisir Terraform plutôt que Bicep
Choisissez Bicep lorsque votre organisation utilise uniquement Azure et souhaite l’intégration la plus étroite avec les nouvelles fonctionnalités Azure (Bicep prend en charge les nouveaux types de ressources dès leur lancement). Choisissez Terraform lorsque vous gérez des ressources auprès de plusieurs fournisseurs cloud, que vous avez besoin du vaste écosystème de modules communautaires ou que vous préférez la syntaxe HCL et la suite d’outils HashiCorp. Les deux solutions conviennent aux déploiements exclusivement Azure ; la préférence de l’organisation est souvent déterminante.
Importer des ressources existantes
Si des ressources existent déjà dans Azure avant que vous ne commenciez à utiliser Terraform, vous pouvez les placer sous la gestion de Terraform avec terraform import. Cette commande récupère l’état actuel de la ressource et l’ajoute au fichier d’état Terraform. Après l’importation, vous devez rédiger manuellement le bloc de configuration correspondant afin qu’il corresponde à la ressource importée, puis exécuter terraform plan pour confirmer qu’il n’existe aucune différence.
# Import an existing resource group into Terraform state
terraform import \
azurerm_resource_group.main \
'/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'
# Terraform 1.5+ supports import blocks in configuration
import {
to = azurerm_resource_group.main
id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}Bonnes pratiques Terraform sur Azure
Suivez ces bonnes pratiques pour Terraform sur Azure : stockez l’état à distance dans Azure Blob Storage en activant le verrouillage de l’état, utilisez des espaces de travail ou des fichiers d’état distincts pour les différents environnements, n’enregistrez jamais de secrets dans le contrôle de code source — utilisez plutôt les sources de données Azure Key Vault —, figez les versions des fournisseurs afin d’éviter les changements incompatibles et exécutez Terraform dans un pipeline d’intégration et de déploiement continus (Azure Pipelines ou GitHub Actions) avec des étapes d’approbation du plan.
Vérification rapide
Vérifiez votre compréhension des concepts Microsoft Azure Fundamentals (AZ-900) présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que Terraform est un outil IaC indépendant des fournisseurs cloud qui utilise le fournisseur AzureRM pour gérer les ressources Azure, que le processus init, plan, apply permet des déploiements sûrs et prévisibles, et que l’état distant dans Azure Blob Storage est essentiel à la collaboration en équipe. Nous allons maintenant découvrir la création de plans App Service et d’applications Web.
Questions Fréquemment Posées
La leçon « Terraform sur Azure » est-elle gratuite ?
Oui — le texte complet de « Terraform sur Azure » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Terraform sur Azure » ?
Configurez le fournisseur Terraform AzureRM, rédigez un plan d’infrastructure de base et déterminez quand privilégier Terraform aux outils ARM ou Bicep natifs. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?
Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Terraform sur Azure » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?
Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fonctionnement d’Azure Resource Manager
- Écriture de modèles ARM
- Bicep : l’IaC Azure moderne
- Terraform sur Azure