L'Infrastructure as Code (IaC) traite l'infrastructure—serveurs, équilibreurs de charge, bases de données, règles de réseau—comme du logiciel. Au lieu de cliquer dans une console cloud ou configurer manuellement du matériel, vous écrivez l'infrastructure souhaitée dans un fichier texte versionné (JSON, YAML, HCL ou Python), et un outil de provisioning (Terraform, CloudFormation, Pulumi, Ansible) lit ce fichier et crée ou met à jour les ressources réelles pour qu'elles correspondent.
L'IaC fonctionne en déclarant l'état final souhaité dans le code. Un moteur de provisioning compare cette déclaration à ce qui existe actuellement, calcule la différence et n'applique que les appels API nécessaires à votre fournisseur cloud. Cela rend l'infrastructure reproductible, auditable et facile à versionner—le même fichier déployé deux fois produit le même résultat.
Exemple : Un fichier Terraform déclarant un serveur web pourrait ressembler à :
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "production-server"
}
}
Exécuter terraform apply crée cet instance EC2 exact ; l'exécuter à nouveau ne change rien (idempotence).
L'IaC réduit les erreurs manuelles, raccourcit le temps de déploiement et fonctionne bien avec les vérifications de santé et la surveillance pour détecter les erreurs de configuration rapidement. Les équipes combinent souvent cela avec des tests automatisés pour détecter les erreurs dans le fichier de définition avant de l'appliquer à la production.
WarningLa dérive de configuration est un risque réel : si quelqu'un change manuellement une ressource dans la console cloud en dehors de votre outil IaC, l'état enregistré par l'outil devient désynchronisé avec la réalité. Une détection et correction régulière de la dérive (ou une politique pour toujours modifier l'infrastructure via le code) empêche cela.