Infrastructure as Code (IaC) consiste à gérer l'infrastructure (réseaux, machines virtuelles, équilibreurs de charge et topologie de connexion) dans un modèle descriptif, en utilisant le même versionnage que l'équipe DevOps utilise pour le code source.
Comme le principe selon lequel le même code source génère le même binaire, un modèle Infrastructure as Code génère le même environnement à chaque fois qu'il est appliqué.
L’IaC est une pratique clé de DevOps et est utilisée en conjonction avec la livraison continue.
L'infrastructure, comme le code, a évolué pour résoudre le problème de la dérive de l'environnement dans le pipeline de diffusion.
Sans IaC, les équipes doivent maintenir les paramètres des environnements de déploiement individuels.
Avec le temps, chaque environnement devient un flocon de neige, c'est-à-dire une configuration unique qui ne peut être reproduite automatiquement.
L'incohérence entre les environnements entraîne des problèmes lors des déploiements. Avec les flocons de neige, l'administration et la maintenance des infrastructures impliquent des processus manuels difficiles à suivre et qui ont contribué à des erreurs.
L'idempotence est un principe de l'Infrastructure as Code.
L'idempotence signifie qu'une commande de déploiement met toujours l'environnement cible dans la même configuration, quel que soit l'état de départ de l'environnement.
L'idempotence est obtenue soit en configurant automatiquement une cible existante, soit en rejetant la cible existante et en recréant un nouvel environnement.
En conséquence, avec IaC, les équipes apportent des modifications à la description de l'environnement et versionnent le modèle de configuration, qui est généralement dans des formats de code bien documentés tels que JSON.
Le pipeline de version exécute le modèle pour configurer les environnements cibles. Si l'équipe a besoin d'apporter des modifications, elle édite la source et non la cible.
Infrastructure as Code permet aux équipes DevOps de tester les applications dans des environnements de type production dès le début du cycle de développement.
Ces équipes s'attendent à fournir de multiples environnements de test de manière fiable et à la demande.
L'infrastructure représentée sous forme de code peut également être validée et testée pour éviter les problèmes de déploiement courants. En même temps, le cloud fournit et détruit dynamiquement des environnements basés sur les définitions de l'IaC.
Les équipes qui mettent en œuvre l’Infrastructure as Code peuvent fournir des environnements stables rapidement et à grande échelle.
Les équipes évitent la configuration manuelle des environnements et renforcent la cohérence en représentant l'état souhaité de leurs environnements par du code.
Les déploiements d'infrastructure avec IaC sont reproductibles et évitent les problèmes d'exécution causés par la dérive de la configuration ou les dépendances manquantes.
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, de manière fiable et à l'échelle.