Qu'est-ce que Infrastructure en tant que code (IaC) ?

Méthode qui consiste à décrire la configuration d'une infrastructure (serveurs, réseaux, stockage, etc.) dans du code (des fichiers de définition) plutôt qu'à la main, et à la créer et la modifier automatiquement avec des outils. Avec les outils déclaratifs, on écrit la configuration souhaitée, et l'outil n'applique que la différence avec l'état réel : appliquer la même définition un nombre quelconque de fois donne donc le même résultat (idempotence). Gérer les définitions dans Git ou un outil similaire facilite l'historique des modifications, les revues et la reproduction d'environnements identiques.

Nom japonais: IaC(Infrastructure as Code)

« Infrastructure en tant que code (IaC) » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Bases du cloud et des conteneurs.

Domaine: Bases du cloud et des conteneurs

Déclaratif ou procédural

Dans un style déclaratif, on écrit le résultat, comme « deux machines virtuelles », et l'outil le compare à l'état actuel pour décider quoi faire. Dans un style procédural, on écrit des opérations dans l'ordre, comme « créer une machine virtuelle », et il faut donc tenir compte de l'état actuel ; une double exécution pourrait créer quatre machines. Les méthodes déclaratives, qui facilitent l'idempotence, sont très utilisées pour la configuration d'infrastructure.

Dérive de configuration

Quand quelqu'un modifie un réglage à la main, par exemple dans une console d'administration, l'état réel s'écarte du code. Un outil déclaratif affiche la différence avant d'appliquer, ce qui permet de repérer une telle dérive. Si toutes les modifications passent par le code, l'état de l'environnement reste conforme au code.

Revue et reproductibilité

Gérer les fichiers de définition dans Git comme des programmes permet de savoir qui a modifié quoi et quand, et de faire relire les modifications avant de les appliquer. Créer la préproduction et la production à partir des mêmes définitions réduit en outre les problèmes dus aux différences entre environnements. Les valeurs confidentielles comme les mots de passe ne sont pas écrites directement dans les fichiers de définition, mais gérées par des mécanismes dédiés.

S'entraîner : questions sur Infrastructure en tant que code (IaC)

Un environnement a été créé en appliquant, avec un outil d'IaC (infrastructure en tant que code) déclaratif, un fichier qui définit un réseau et deux machines virtuelles. Juste après, on applique de nouveau le même fichier sans rien modifier. Que se passe-t-il ?

  1. AIl n'y a aucune différence entre la définition et l'état réel : rien n'est donc modifié
  2. BUn second ensemble identique est créé, ce qui donne quatre machines virtuelles
  3. CComme l'environnement existe déjà, la deuxième application s'arrête avec une erreur
Afficher la réponse et l'explication

Réponse : A. Il n'y a aucune différence entre la définition et l'état réel : rien n'est donc modifié

Avec une IaC déclarative, le code décrit la configuration souhaitée plutôt que les étapes, et l'outil la compare à l'état réel pour ne créer, modifier ou supprimer que ce qui diffère. Appliquer la même définition un nombre quelconque de fois donne donc le même résultat (idempotence), et la deuxième application ne change rien. Si quelqu'un modifie un réglage à la main et que l'état réel s'écarte de la définition (dérive de configuration), l'application suivante le ramène à l'état défini. Gérer les définitions dans Git permet en outre de consulter l'historique et de faire des revues, comme pour des programmes.

Questions fréquentes

L'IaC supprime-t-elle la configuration manuelle ?

Une grande partie du travail peut être transformée en code, mais certaines étapes manuelles, comme la configuration initiale de l'authentification, subsistent. L'important est de ne pas laisser les modifications manuelles en l'état, mais de les intégrer au code afin que le code et l'état réel restent cohérents.

Quel est le lien entre l'IaC et les conteneurs ?

L'IaC sert à construire les fondations comme les réseaux, les machines virtuelles et les clusters, et les applications qui s'exécutent dessus sont souvent livrées sous forme d'images de conteneur. Les manifestes Kubernetes suivent la même idée que l'IaC, puisqu'ils déclarent un état souhaité.

« Infrastructure en tant que code (IaC) » dans les explications

Questions mentionnant « Infrastructure en tant que code (IaC) » (1)

  1. Un environnement a été créé en appliquant, avec un outil d'IaC (infrastructure en tant que code) déclaratif, un fichier qui définit un réseau et deux machines virtuelles. Juste après, on applique de nouveau le même fichier sans rien modifier. Que se passe-t-il ?

Termes associés

Git Conteneur Déploiement bleu-vert (blue-green deployment) Déploiement canari (canary release) Docker Image de conteneur Informatique sans serveur (serverless) Infrastructure immuable (immutable infrastructure) Kubernetes Mise à l'échelle automatique (autoscaling)

Retour au glossaire