eadl:bloc4:fm2:intro

Ceci est une ancienne révision du document !


Introduction à l’Infrastructure as Code (IaC)

  • Comprendre les limites des approches traditionnelles
  • Identifier les problématiques résolues par l’IaC
  • Découvrir les principes fondamentaux de l’IaC
  • Distinguer les rôles de Terraform et Ansible

Dans une approche classique :

  • Création manuelle des machines (console cloud)
  • Configuration à la main (SSH, scripts)
  • Déploiements non standardisés

Problèmes :

  • Erreurs humaines fréquentes
  • Temps de déploiement long
  • Difficulté à reproduire un environnement

Définition :

Un système évolue au fil du temps et ne correspond plus à sa configuration initiale.

Exemple :

  • Un serveur en production a été modifié manuellement
  • L’environnement de test n’est plus identique
  • Bugs impossibles à reproduire

Sans automatisation :

  • Impossible de recréer rapidement un environnement
  • Dépendance à des connaissances implicites
  • Documentation souvent obsolète

Exemple :

  • Créer 1 serveur → faisable à la main
  • Créer 50 serveurs → ingérable

Problèmes :

  • Temps
  • cohérence
  • erreurs cumulées

Questions difficiles :

  • Qui a modifié quoi ?
  • Quand ?
  • Pourquoi ?

L’infrastructure devient :

  • trop complexe
  • trop dynamique
  • trop critique

⇒ Besoin d’automatisation et de standardisation

Infrastructure as Code :

Décrire l’infrastructure sous forme de code afin de pouvoir :

  • versionner
  • automatiser
  • reproduire
  • Déclaratif : décrire l’état cible
  • Procédural : décrire les étapes

Appliquer plusieurs fois une configuration produit le même résultat

  • Code stocké dans Git
  • Historique des modifications
  • rollback possible
  • Déploiement rapide
  • Réduction des erreurs humaines
  • Même code = même infrastructure
  • Écriture du code
  • Planification (diff)
  • Application
  • Mise à jour
  • Destruction

Deux grandes catégories d’outils :

  • Provisioning d’infrastructure
  • Configuration des systèmes

Rôle :

  • Provisionner l’infrastructure

Exemples :

  • VM (EC2)
  • Réseau (VPC, subnets)
  • Load balancer
  • Base de données

Caractéristiques :

  • Approche déclarative
  • Gestion d’un état (state)
  • Interaction via API cloud

Rôle :

  • Configurer les systèmes
  • Déployer des applications

Exemples :

  • Installer NGINX
  • Configurer un service
  • Déployer une application

Caractéristiques :

  • Approche orientée tâches
  • Exécution séquentielle
  • Idempotence

Terraform :

  • Déclaratif
  • Orienté infrastructure
  • Gère un état global

Ansible :

  • Orienté tâches
  • Configuration logicielle
  • Pas de state central

Dans un workflow réel :

  • Terraform crée l’infrastructure
  • Ansible configure les serveurs

L’Infrastructure as Code permet :

  • d’industrialiser les déploiements
  • de fiabiliser les environnements
  • de gagner en rapidité et en reproductibilité

Terraform et Ansible ne sont pas concurrents mais complémentaires.

Pourquoi est-il risqué de modifier une infrastructure manuellement en production ?

  • eadl/bloc4/fm2/intro.1777075475.txt.gz
  • Dernière modification : il y a 12 jours
  • de jcheron