Qu’est-ce que l’infrastructure en tant que code (IaC) ?

L’infrastructure en tant que code (IaC) utilise la méthodologie DevOps et le contrôle de version avec un modèle descriptif pour définir et déployer l’infrastructure, comme les réseaux, les machines virtuelles, les équilibreurs de charge et les topologies de connexion. Tout comme le même code source génère toujours le même fichier binaire, un modèle IaC génère le même environnement chaque fois qu’il se déploie.

Diagram of infrastructure as code defining the environment in a versioned file.

IaC est une pratique DevOps clé et une composante de la livraison continue. Avec IaC, les équipes DevOps peuvent travailler ensemble avec un ensemble unifié de pratiques et d’outils pour fournir des applications et leur infrastructure de support rapidement et de manière fiable à grande échelle.

Éviter la configuration manuelle pour appliquer la cohérence

IaC a évolué pour résoudre le problème de la dérive de l’environnement dans les pipelines de mise en production. Sans IaC, les équipes doivent gérer les paramètres de l'environnement de déploiement individuellement. Au fil du temps, chaque environnement devient un « flocon de neige », une configuration unique qui ne peut pas être reproduite automatiquement. L’incohérence entre les environnements peut entraîner des problèmes de déploiement. L’administration et la maintenance de l’infrastructure impliquent des processus manuels sujets aux erreurs et difficiles à suivre.

IaC évite la configuration manuelle et applique la cohérence en représentant les états d’environnement souhaités via du code bien documenté dans des formats tels que JSON. Les déploiements d’infrastructure avec IaC sont reproductibles et empêchent les problèmes d’exécution causés par la dérive de configuration ou les dépendances manquantes. Les pipelines de mise en production exécutent les descriptions d’environnement et les modèles de configuration de version pour configurer les environnements cibles. Pour apporter des modifications, l’équipe modifie la source, et non la cible.

Idempotence, la capacité d’une opération donnée à toujours produire le même résultat, est un principe IaC important. Une commande de déploiement définit toujours l’environnement cible dans la même configuration, quel que soit l’état de départ de l’environnement. L’Idempotence est obtenue en configurant automatiquement la cible existante ou en ignorant la cible existante et en recréant un nouvel environnement.

Outils utiles

Fournir rapidement des environnements de test stables à grande échelle

IaC aide les équipes DevOps à tester les applications dans des environnements de production au début du cycle de développement. Les équipes peuvent approvisionner plusieurs environnements de test de manière fiable à la demande. Le cloud provisionne et supprime dynamiquement les environnements en fonction des définitions IaC. Le code d’infrastructure lui-même peut être validé et testé pour éviter les problèmes de déploiement courants.

Utiliser des fichiers de définition déclaratifs

IaC doit utiliser des fichiers de définition déclaratifs si possible. Un fichier de définition décrit les composants et la configuration requis par un environnement, mais pas nécessairement la façon d’obtenir cette configuration. Par exemple, le fichier peut définir une version et une configuration de serveur requises, mais pas spécifier le processus d’installation et de configuration du serveur. Cette abstraction permet une plus grande flexibilité pour utiliser des techniques optimisées que le fournisseur d’infrastructure fournit. Les définitions déclaratives permettent également de réduire la dette technique du maintien du code impératif, comme les scripts de déploiement, qui peuvent s’accumuler au fil du temps.

Il n’existe aucune syntaxe standard pour l’IaC déclarative. La syntaxe permettant de décrire IaC dépend généralement des exigences de la plateforme cible. Différentes plateformes prennent en charge les formats de fichiers tels que YAML, JSON et XML.

Déployer IaC sur Azure

Azure fournit une prise en charge native d'IaC via le modèle Azure Resource Manager. Les équipes peuvent définir des modèles ARM ou Bicep déclaratifs qui spécifient l'infrastructure nécessaire au déploiement des solutions.

Des plates-formes tierces telles que Terraform, Ansible, Chef, et Pulumi prennent également en charge IaC pour gérer l’infrastructure automatisée.