RousselTMLEARNING

TP · Vagrant : de la découverte à l'expertise

TP : Un environnement multi-machines (web + base de données)

Ce que vous allez apprendre dans ce TP
  • Définir plusieurs machines dans un Vagrantfile
  • Provisionner automatiquement
  • Vérifier la communication entre machines

Le Vagrantfile multi-machines #

Ce que vous allez apprendre dans cette section
  • Définir plusieurs machines dans un Vagrantfile
  • Provisionner automatiquement
  • Vérifier la communication entre machines

Contexte. L'application a un front web et une base de données qui doivent communiquer. Reproduire cette topologie sur un poste de développement, avec deux machines sur un réseau privé, évite les surprises du « ça marchait en local » au moment du déploiement.

Prérequis : TP précédent, notions de réseau (IP, ports)  ·  Durée estimée : 35 min

Deux nœuds, un réseau, un provisioning.
  1. 1. Décrire les deux machines

    Pourquoi ? Une boucle sur un tableau de nœuds évite de dupliquer la configuration : ajouter une machine revient à ajouter une ligne.

    Créez web (192.168.56.11) et db (192.168.56.12) à partir d'une boucle Ruby.
  2. 2. Provisionner avec un script

    Pourquoi ? Installer les logiciels à la main rend l'environnement non reproductible ; un provisioner le fait à chaque création, de façon identique pour tous.

    Installez nginx sur web et PostgreSQL sur db via un provisioner shell idempotent.
  3. 3. Vérifier la communication

    Pourquoi ? Tester le ping puis le port TCP distingue un problème de réseau d'un problème de service : le premier test échoue pour la première cause, le second pour la deuxième.

    Depuis web, joignez db sur le port PostgreSQL.
  4. 4. Rejouer sans tout casser

    Pourquoi ? Un provisioning doit pouvoir être rejoué sans casser la machine : c'est l'idempotence, indispensable quand on corrige la configuration.

    Relancez le provisioning sur une seule machine : que se passe-t-il (idempotence) ?

Niveau de difficulté : ●●○○○ (2/5)

Mon suivi

  • ⏱ Durée estimée : ≈ 35 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Articles recommandés

Bonnes pratiques Vagrant : des environnements reproductibles et rapides

Bonnes pratiques Vagrant : Vagrantfile versionné, boxes épinglées, provisioning idempotent, multi...

Linux vs Unix : Le Guide Complet des Commandes et Distributions

Comprenez les différences entre Linux et Unix, explorez les distributions (serveur, desktop, ligh...

Ansible : l'inventaire (statique, dynamique, groupes et variables)

Comprendre et maîtriser l'inventaire Ansible : fichiers INI et YAML, groupes, variables d'hôte et...

Ansible : les commandes Ad-Hoc

Exécuter des actions immédiates sur un parc de serveurs avec ansible : modules ping, command, she...

Ansible : structurer son code avec les rôles

Créer, organiser et réutiliser des rôles Ansible : arborescence, defaults, tasks, handlers, templ...

Ansible : générer des fichiers dynamiques avec Jinja2 et les facts

Créer des fichiers de configuration dynamiques : templates Jinja2, variables, facts, filtres, bou...

Ansible : gérer la sécurité (Vault, SSH, privilèges et secrets)

Sécuriser Ansible : Ansible Vault, authentification SSH par clés, become et sudo, no_log, durciss...

Ansible : gérer son infrastructure avec des playbooks (Infrastructure as Code)

Écrire des playbooks de production : structure d'un projet, plays, handlers, tags, strategy seria...

Ansible : piloter ses automatisations avec une interface graphique (AWX, Semaphore, AAP)

Comparer et installer les interfaces graphiques d'Ansible : AWX, Ansible Automation Platform, Sem...