Aller au contenu

TP – Déployer une machine Debian par installation automatisée

BTS SIO SISR 2e année – Bloc 2 – S07 – binôme : un tape, l'autre lit ; on échange les rôles à chaque partie

Note

But. Tu choisis une méthode de déploiement selon un besoin, tu écris un fichier preseed, tu le sers par HTTP, tu déploies une machine virtuelle sans intervention et tu vérifies qu'elle est conforme.

Durée : 2 h 45 (parties A à D), plus le bilan. Prérequis : cours S07 lu ; S06 ; l'image ISO « netinst » de Debian ; une connexion Internet pour le miroir de paquets.

Note

Comment ce TP fonctionne. Avant de manipuler, tu écris ce que tu anticipes, puis tu testes et tu notes ce que tu constates. Un bilan de compétences clôt la séance.

Binôme : ____________ / ____________

Contraintes

  • Le déploiement efface le disque de la VM neuve : c'est voulu.
  • Le mot de passe du compte utilisateur est lab-S07 (mot de passe de laboratoire).
  • La partie C suppose que tu disposes d'une VM Debian existante (modele ou VM-A de S06) qui sert de serveur de déploiement (appelons-la DEPLOI).

Partie A – Choisir la méthode (≈ 20 min)

Pour chaque cas, choisis la ou les méthodes de déploiement et justifie.

Cas Méthode(s) Justification
1. 25 postes Windows identiques à installer pour la rentrée
2. 3 serveurs Linux différents, installés une seule fois
3. 10 VM Debian à créer chaque semaine pour des tests
4. Une agence distante sans technicien, 8 postes à réinstaller
Éléments de réponse

Plusieurs réponses sont acceptables si elles sont justifiées. Exemples :

  1. Image (clonage) ou déploiement réseau WDS/MDT avec un autounattend.xml : machines identiques, volume élevé.
  2. Installation manuelle documentée, ou preseed léger : le gain de l'automatisation est faible pour trois machines différentes, mais la documentation reste indispensable.
  3. Modèle + clone (S06) ou preseed/cloud-init : fréquence élevée, reproductibilité.
  4. PXE + installation automatisée : aucun support à manipuler sur place, réinstallation à distance.

Je comprends. Pourquoi l'automatisation n'est-elle pas toujours rentable ? ______________________

Éléments de réponse

Écrire, tester et maintenir l'automatisation coûte du temps. Pour peu de machines, ou des machines toutes différentes, ce coût dépasse le gain. Plus le nombre de déploiements augmente, plus l'automatisation devient rentable.


Partie B – Écrire le fichier preseed (≈ 40 min)

1. Sur DEPLOI, crée un dossier de travail et génère l'empreinte du mot de passe :

mkdir -p ~/deploiement && cd ~/deploiement
openssl passwd -6 'lab-S07'

Copie la ligne obtenue (elle commence par $6$).

2. Crée preseed.cfg avec le contenu suivant (remplace EMPREINTE par la ligne obtenue) :

# Installation automatique Debian - S07
d-i debian-installer/locale string fr_FR.UTF-8
d-i keyboard-configuration/xkb-keymap select fr
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string deb-auto
d-i netcfg/get_domain string lab.local
d-i mirror/country string manual
d-i mirror/http/hostname string deb.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i passwd/root-login boolean false
d-i passwd/make-user boolean true
d-i passwd/user-fullname string Utilisateur
d-i passwd/username string utilisateur
d-i passwd/user-password-crypted password EMPREINTE
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Paris
d-i clock-setup/ntp boolean true
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
tasksel tasksel/first multiselect standard, ssh-server
d-i pkgsel/include string sudo curl
d-i pkgsel/upgrade select full-upgrade
popularity-contest popularity-contest/participate boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string default
d-i preseed/late_command string in-target sh -c 'echo "installe par preseed le $(date -I)" > /etc/motd'
d-i finish-install/reboot_in_progress note

3. Vérifie la syntaxe du fichier :

sudo apt -y install debconf-utils
debconf-set-selections -c preseed.cfg && echo SYNTAXE-OK

J'anticipe. Que fait la ligne passwd/root-login boolean false ? Que se passe-t-il sans elle ? ______________________

Éléments de réponse

Elle désactive le compte root (connexion directe) ; l'utilisateur créé reçoit les droits sudo. Sans elle, l'installateur demanderait un mot de passe root. La vérification -c ne contrôle que la syntaxe, pas la validité des réponses vis-à-vis de l'installateur : seul un test réel le confirme.

Je comprends. Pourquoi stocker l'empreinte du mot de passe et non le mot de passe ? Est-ce suffisant en production ? ______________________

Éléments de réponse

Quiconque lit le fichier ne voit pas le mot de passe directement. Ce n'est pas suffisant : l'empreinte d'un mot de passe faible se casse facilement, et le fichier est accessible à tous les clients du réseau de déploiement. En production, on évite les mots de passe communs : clé SSH, mot de passe changé à la première connexion, ou gestionnaire de secrets.


Partie C – Servir et déployer (≈ 70 min)

1. Place DEPLOI et la future machine sur un réseau NAT commun (Internet pour le miroir) :

VBoxManage natnetwork add --netname lab-nat --network 10.0.2.0/24 --enable --dhcp on
VBoxManage modifyvm DEPLOI --nic1 natnetwork --nat-network1 lab-nat

Redémarre DEPLOI, relève son adresse (ip -br a), puis sers le dossier :

cd ~/deploiement
python3 -m http.server 8000

2. Sur l'hôte, crée la machine à déployer (disque vide) :

VBoxManage createvm --name DEB-AUTO --ostype Debian_64 --register
VBoxManage modifyvm DEB-AUTO --memory 2048 --cpus 2 --nic1 natnetwork --nat-network1 lab-nat
VBoxManage createmedium disk --filename ~/DEB-AUTO.vdi --size 12288
VBoxManage storagectl DEB-AUTO --name SATA --add sata
VBoxManage storageattach DEB-AUTO --storagectl SATA --port 0 --device 0 --type hdd --medium ~/DEB-AUTO.vdi
VBoxManage storageattach DEB-AUTO --storagectl SATA --port 1 --device 0 --type dvddrive --medium /chemin/vers/debian-netinst.iso

3. Démarre DEB-AUTO. Au menu de démarrage de l'installateur, ne choisis pas l'installation graphique : modifie la ligne de démarrage (touche Tab en BIOS, e en UEFI) et ajoute à la fin :

auto=true priority=critical url=http://ADRESSE-DEPLOI:8000/preseed.cfg

(remplace ADRESSE-DEPLOI par l'adresse relevée).

J'anticipe. Qu'attends-tu de voir sur l'écran de DEB-AUTO pendant l'installation ? Et sur le terminal de DEPLOI ? ______________________

Éléments de réponse

Sur DEB-AUTO : l'installateur défile sans poser de question (réseau, partitionnement, installation des paquets), puis redémarre. Sur DEPLOI : le serveur web affiche une ligne GET /preseed.cfg HTTP/1.1" 200 : la preuve que le fichier de réponses a été téléchargé.

Note l'heure de début et de fin : durée du déploiement = ______ min.

Point de contrôle : la machine redémarre sur un écran de connexion Debian ; la ligne GET /preseed.cfg … 200 apparaît côté DEPLOI.

Si l'installateur pose quand même des questions : note laquelle (elle manque au preseed) ; ajoute la réponse correspondante et recommence. C'est la méthode normale de mise au point.


Partie D – Vérifier la conformité et documenter (≈ 35 min)

1. Connecte-toi à DEB-AUTO (compte utilisateur, mot de passe lab-S07) et vérifie :

hostname -f                 # deb-auto.lab.local
cat /etc/motd               # message ajouté par late_command
sudo -l | head -3           # droits sudo
dpkg -l sudo curl | tail -2 # paquets demandés
systemctl is-active ssh     # active
timedatectl | grep "Time zone"

Complète :

Contrôle attendu Constaté Conforme ?
Nom d'hôte deb-auto.lab.local
Message dans /etc/motd
Droits sudo
Paquets sudo et curl installés
Service ssh actif
Fuseau Europe/Paris

2. Rédige une fiche de procédure d'une demi-page : prérequis, étapes (avec les commandes), durée mesurée, vérifications, problèmes rencontrés.

Éléments de réponse

Tous les contrôles doivent être conformes. Une bonne fiche permet à un tiers de refaire le déploiement seul : où est le fichier, comment le servir, la ligne à ajouter au démarrage, comment vérifier.

Je comprends. Que faudrait-il ajouter à ce déploiement pour que la machine soit prête à l'emploi dans l'entreprise (sécurité, configuration) ? ______________________

Éléments de réponse

Une étape de configuration après installation (Ansible, voir S08) : pare-feu, clés SSH, services, supervision, mises à jour automatiques, et suppression ou renouvellement du mot de passe de déploiement.

Pour aller plus loin

  • Ajoute à late_command l'installation d'une clé SSH publique pour utilisateur.
  • Décris (sans la monter) la chaîne PXE : quelles options DHCP, quel serveur TFTP, quel fichier de démarrage ?

Retour en entreprise (si ta situation le permet)

  • Observer : comment l'entreprise installe-t-elle ses postes et ses serveurs ? Existe-t-il une image, un fichier de réponses, un outil ?
  • Documenter : la procédure d'installation d'un poste type, avec sa durée.

Rendu

Compte rendu PDF, nommé RENDU-B2A2-S07-NOM.pdf, contenant : le fichier preseed.cfg (empreinte masquée), la capture de la ligne GET /preseed.cfg … 200, la capture de la machine installée, le tableau de conformité, la fiche de procédure.

Bilan de la séance

Niveau : Non maîtrisé, Maîtrise partielle, Bonne maîtrise ou Excellente maîtrise, ou Non évalué.

Compétence du référentiel Ce que j'ai fait dans cette séance Niveau
B2.2 – Installer, tester et déployer une solution d'infrastructure réseau

Note

Les codes sont ceux du référentiel.

Je sais faire, sans aide :

  • Comparer les méthodes de déploiement et choisir selon un besoin ;
  • Écrire un fichier preseed et en vérifier la syntaxe ;
  • Servir le fichier et déclencher une installation sans intervention ;
  • Contrôler la conformité de la machine déployée ;
  • Documenter la procédure.

Ce que je dois reprendre : ______________________

Ma question à poser à l'enseignant : ______________________