Preseed Debian : automatisez simplement l'installation

Preseed Debian : automatisez simplement l’installation

Let's wait

Avatar de l'auteur
David Legrand

Publié dans

Logiciel

30/04/2019 5 minutes
23

Preseed Debian : automatisez simplement l'installation

Installer un système d'exploitation sur un ordinateur consiste le plus souvent à répondre à quelques questions, une pratique que l'on peut facilement automatiser. À l'occasion de la mise en ligne de Debian 9.9, voici comment faire avec un fichier « preseed ».

Lorsque vous achetez un PC, il est en général préconfiguré et le système d'exploitation déjà en place. Vous n'avez plus que quelques étapes à franchir, comme accepter les conditions d'utilisation pour Windows par exemple.

Vous pouvez aussi y installer l'OS de votre choix à la main, depuis un CD ou une clé USB. Une étape désormais assez courte, consiste à répondre à quelques questions. Une procédure simple, mais pouvant vite devenir répétitive si vous devez configurer plusieurs machines physiques et/ou virtuelles dans le cadre de votre travail (ou de vos week-ends pluvieux).

Heureusement, la plupart des systèmes proposent une mécanique d'installation dite non interactive (unattended en anglais) permettant de définir à l'avance tous les paramètres : langue, clavier, réseau, configuration du stockage, compte utilisateur, pilotes et applications, etc. Une fois lancée, vous n'avez (presque) plus rien à faire.

Selon les cas, c'est plus ou moins simple à mettre en œuvre. Pour commencer ce tour d'horizon des possibilités, analysons Debian, dont la version 9.9 vient d'être mise en ligne, et sa méthode de préconfiguration (preseed).

Notre dossier sur l'automatisation de l'installation des OS :

Une procédure, de multiples possibilités

Comme souvent avec Debian, les développeurs ont opté pour une solution simple mais répondant à une multitude de cas en fonction de la composition de la machine, la façon dont elle sera configurée ou même la méthode de récupération du fichier de préconfiguration. La documentation précise que l'on peut le faire via une clé USB, un disque ou une URL.

Car c'est bien de cela dont il s'agit, fournir un fichier texte comprenant tous les paramètres à utiliser en général nommé preseed.cfg. Chaque ligne qu'il contient correspond à une question que Debian Installer (d-i) est susceptible de poser à l'utilisateur. Si la réponse est présente dans le fichier, aucune interaction n'est nécessaire.

L'objectif est donc d'être le plus complet possible. Un fichier type est fourni par ici, vous trouverez celui que nous utilisons dans cet article (commenté) ci-dessous. Il permet une installation automatique, configurant la machine en français, le système sur le premier périphérique de stockage trouvé (effacé au passage). Faites donc attention avant de l'utiliser.

Nous l'avons voulu le plus générique possible, fonctionnant aussi bien sur un système physique que virtuel, avec un disque dur ou un SSD S-ATA/PCIe, avec ou sans UEFI, etc. Personnalisez-le selon vos propres besoins, notamment le nom de l'utilisateur, son mot de passe, le nom de la machine sur le réseau (hostname), les paquets à installer, etc.

Si vous le souhaitez, des étapes de confirmation peuvent être activées en (dé)commentant certaines lignes (#). Bien d'autres possibilités sont offertes, n'hésitez pas à vous entrainer via une machine virtuelle.

Modification de l'ISO : un script à tout faire

Nous ne couvrirons pas ici la procédure d'installation via le réseau, seulement les deux plus courantes via une image ISO et/ou une clé USB. Dans les deux cas, il faut intégrer le fichier de préconfiguration et modifier le menu de boot pour qu'il propose une procédure d'installation automatisée. 

Mais une image ISO est un élément bootable en lecture seule, complexe à modifier. Il existe ainsi différentes méthodes consistant à extraire son contenu, le modifier puis recréer une image mais toutes sont pénibles. Heureusement, Luc Didry de Framasoft a créé un petit script à utiliser sous Linux permettant d'automatiser tout ça : Preseed creator.

Il s'occupe de mettre à jour l'image avec un fichier de préconfiguration fourni via initrd (Initial Ramdisk). Certains outils sont nécessaires pour qu'il fonctionne :  wget, genisoimage et isolinux. Pour une utilisation sur une clé USB, avec une machine exploitant l'UEFI, vous pouvez également utiliser xorriso :

sudo apt install genisoimage isolinux wget xorriso 

Il suffit de le lancer avec les paramètres suivants :

sudo ./preseed_creator.sh -i image.iso -p preseed.cfg -o image_preseed.iso

Si aucune ISO de Debian n'est passée en paramètre, la dernière en date (netinst) sera téléchargée. Si aucun fichier de préconfiguration n'est fourni, l'installation sera simplement configurée pour la langue fr-BE. Le paramètre -x permet d'utiliser xorriso plutôt que genisoimage, -g de récupérer la dernière préconfiguration d'exemple publié par Debian.

Transférez l'image sur une clé USB, un disque optique (qui peut être émulé via un HDD/SSD), dans une machine virtuelle ou une fois l'installation lancée sur votre machine, vous aurez le choix entre la procédure graphique qui n'est pas automatisée ou classique qui le sera. D'autres scripts du même genre peuvent être trouvés sur GitHub ici ou encore .

Écrit par David Legrand

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Une procédure, de multiples possibilités

Modification de l'ISO : un script à tout faire

next n'a pas de brief le week-end

Le Brief ne travaille pas le week-end.
C'est dur, mais c'est comme ça.
Allez donc dans une forêt lointaine,
Éloignez-vous de ce clavier pour une fois !

Fermer

Commentaires (23)


Super bien, merci !!


Ça fait penser que Buster devrait pointer le bout de son nez dans pas trop longtemps…


Normalement d’ici l’été de mémoire <img data-src=" />


moi tout est déjà en buster il est frozen donc tout est ok <img data-src=" />


Je ne suis plus à 2 mois près :)


Ah, il est temps. Ce n’est pas comme si autoinstall existait depuis 2014 sur OpenBsd <img data-src=" />


Punaise ils ont mis du temp chez Debian. Sous Centos, Fedora, Arch et Opensuse ont à ça depuis une éternité sans compter le déployement à partir d’un serveur pour tous les clients (histoire&nbsp; d’installer une 50aines de postes en quelques clics).&nbsp;








Nargek a écrit :



Ah, il est temps. Ce n’est pas comme si autoinstall existait depuis 2014 sur OpenBsd <img data-src=" />









refuznik a écrit :



Punaise ils ont mis du temp chez Debian. Sous Centos, Fedora, Arch et Opensuse ont à ça depuis une éternité sans compter le déployement à partir d’un serveur pour tous les clients (histoire&nbsp; d’installer une 50aines de postes en quelques clics).&nbsp;






C'était déjà présent sous Sarge il me semble, donc au moins 2005.








Nargek a écrit :



Ah, il est temps. Ce n’est pas comme si autoinstall existait depuis 2014 sur OpenBsd <img data-src=" />









refuznik a écrit :



Punaise ils ont mis du temp chez Debian. Sous Centos, Fedora, Arch et Opensuse ont à ça depuis une éternité sans compter le déployement à partir d’un serveur pour tous les clients (histoire  d’installer une 50aines de postes en quelques clics).







Preseed a pas loin de 15 ans…



grilled



C’est un tuto pas une actu ;)



&nbsp;


C’est le plan. ;)


Intéressant à savoir, d’autant plus que les installations de Debian que j’avais faites étaient plutôt, hem, rébarbatives.



À essayer pour voir…


C’est un peu le souci de toutes les installations, surtout quand tu en fais en série ou de manière récurrente : toujours les mêmes choix, toujours les mêmes comptes, et comme le veut la règle “si tu dois faire une chose plus d’une fois, automatise la”


C”est étonnant, ça fait des années que l’installateur est conçu de telle façon que, pour l’utilisateur lambda, l’installation consiste principalement à appuyer sur {Entrée}. Si tu as besoin de réfléchir pour répondre à une question de l’installateur, la réponse par défaut est la bonne.



Pour un usage occasionnel, la méthode manuelle depuis une image netinst est clairement la plus simple et la plus rapide.



Ceci dit, Debian n’est pas forcément la distribution la plus accueillante pour l’utilisateur lambda occasionnel <img data-src=" />.


C’est pas mal pour faire du mode unattended simple.

Après, si besoin d’uniformité ou d’actions de maintenance généralisées (du genre un “parc” de VM de geekage) ou d’automatisation bien fun à réaliser, il y a tout ce qui est Ansible, ou encore suite logicielle de Hashicorp (Terraform, Consul, etc, mais ça c’est vraiment pour le délire, Ansible c’est déjà suffisant). Ce qui permet, accessoirement, de maintenir aussi divers socles OS et logiciels pour dans le cas où tu t’amuserais avec de la base Debian et de la base RedHat par exemple.



Sinon si je puis me permettre une amélioration à ton script d’exemple de déploiement : je te suggère aussi d’uniformiser les UID/GID pour tes comptes utilisateurs. Même si généralement le premier user créé à l’install a le même UID/GID, c’est un coup à être emmerdé en cas de distributions différentes dès qu’on commence à exploiter du NFS et autres joyeusetés partagées.


C’est complémentaire disons, Ansible permet d’automatiser via SSH, mais le système doit être présent (bon on peut avoir un accès SSH pendant l’installation sous Debian & co, mais ça revient au même <img data-src=" />). Après on peut partir sur les solutions de déploiement complexe à la Chef/Puppet & co, mais il faut effectivement avoir un parc à gérer pour s’y retrouver par rapport au temps passé à initialiser tout ça <img data-src=" />


Oui je parlais plus dans le cadre d’un parc à uniformiser pour Ansible, sinon c’est plus le taff d’un Terraform et compagnie pour le pop de VM toute faite.



Perso, j’ai une paire de rôles Ansible qui serventt à maintenir quelques confs de manière uniformisée entre plusieurs machines (NAS sous Ubuntu Server, HTPC sous Fedora, PC geekage sous Ubuntu, et un Raspberry) et faire du WOL pour déclencher des mises à jours de packages.

L’intérêt est que ça évite les scripts qui tournent dans des crontabs et qu’on oublie de maintenir proprement après.

Et le troupeau est sur un repo privé Github comme ça pas de prise de chou pour les récupérer.



Est-ce que vous prévoyez de faire un article sur les différents outils d’industrialisation par la suite ? Ca peut être sympa comme sujet je pense :)


Oui, en fait la plupart des “petits” articles /tutos de ce genre sont seulement là pour servir de base technique à d’autres plus gros sur un même sujet ;) Mais comme je préfère éviter que tout le monde soit largué, je détaille tout au fur et à mesure :p



(Disons que par exemple publier un papier sur le PXE d’un OS avec un fichier de preseed c’est intéressant, mais autant expliquer le concept de preseed en amont et proposer des solutions plus classiques à tous ceux qui ne vont pas se monter un serveur pour du PXE).


Mal lu, mal compris.

C’est ça de lire en diagonale <img data-src=" />


Linux ne sert pas à grand chose pour le desktop.


Ah bon ?



Je n’utilise que cela chez moi depuis le siècle dernier.








Inv4ndi a écrit :



Linux ne sert pas à grand chose pour le desktop.







<img data-src=" /><img data-src=" /><img data-src=" /><img data-src=" /><img data-src=" /><img data-src=" /><img data-src=" /><img data-src=" /><img data-src=" /> <img data-src=" />



Signé : quelqu’un sous Tux depuis septembre 2005, et qui fait tout pareil en desktop sous le manchot qu’avant sous Mac OS Classic et maintenant sous Win au bureau.



Avoir un cerveau ne sert pas forcément à réfléchir <img data-src=" />