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 des infrastructures, telles que des réseaux, des machines virtuelles, des équilibreurs de charge et des topologies de connexion. Tout comme le même code source génère toujours le même binaire, un modèle IaC génère le même environnement à chaque déploiement.
IaC est une pratique DevOps clé et un composant de la livraison continue. Avec IaC, les équipes DevOps peuvent collaborer avec un ensemble unifié de pratiques et d’outils pour fournir des applications et leur infrastructure de prise en charge 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 dérive de l’environnement dans les pipelines de mise en production. Sans IaC, les équipes doivent gérer les paramètres d’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 qui sont 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.
L’idempotence, la capacité d’une opération donnée à produire toujours 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’idempotency est obtenue soit en configurant automatiquement la cible existante, soit en ignorant la cible existante et en recréant un nouvel environnement.
Outils utiles
Fournir des environnements de test stables rapidement à grande échelle
IaC aide les équipes DevOps à tester des applications dans des environnements de type production au début du cycle de développement. Teams peut approvisionner plusieurs environnements de test de manière fiable à la demande. Le cloud approvisionne et supprime dynamiquement les environnements basés sur 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
L’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 comment effectuer 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 les techniques optimisées fournies par le fournisseur d’infrastructure. Les définitions déclaratives permettent également de réduire la dette technique de la maintenance du code impératif, tel que les scripts de déploiement, qui peut s’accumuler au fil du temps.
Il n’existe aucune syntaxe standard pour l’IaC déclarative. La syntaxe de description de l’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 de l’IaC via le modèle Azure Resource Manager. Teams peut définir des modèles ARM déclaratifs qui spécifient l’infrastructure requise pour déployer des solutions.
Les plateformes tierces comme Terraform, Ansible, Chef et Pulumi prennent également en charge l’IaC pour gérer l’infrastructure automatisée.