Kickstart - Ubuntu 18.04 LTS

De Dinfadom - Wiki
Aller à : navigation, rechercher
Kst.png

Difficultés : Etoile.pngEtoile.pngEtoile.png


Kickstart et Netboot (noPXE)[modifier]

ATTENTION : Cet article, fait suite à l’article concernant la création d’un serveur mirroir apt-mirror

Rappel des informations :[modifier]

Serveur : mirror.dinfadom.com


Roles :[modifier]

  • Apache2 (HTTP)

Emplacements des fichiers/dossiers :

  • /var/www/html : dossier racine de notre serveur http (apache2)
  • /var/www/html/ks : emplacement des scripts Kickstart (ks.cfg)
  • /var/www/html/ISO/Netboot/ : contiendra notre ISO pour la creation d’un CD personalisé

Objectifs finaux :[modifier]

Automatisation de l’installation d’Ubuntu depuis un CD-ROM avec :

  • Type d’installation : réseau (Netinstall)
  • Langue : FR
  • OS : Ubuntu 18.04 LTS (environnement Gnome)
  • architecture : amd64
  • Mot de passe pour root
  • Créer un utilisateur (sudoer) avec mot de passe.
  • Installation des outils courants officiels Ubuntu (depuis les dépôt officiels)
  • Installation d'application provenant de sources tierces (ppa)

Partitionnement automatique :

  • / – 50GB (ext4)
  • Swap – 2 GB (swapfs)
  • /home – reste du disque (ext4)
  • Changement du nom de la machine
  • Affiche le résumé de la configuration (timeur de 30 Secondes)
Icon-quote.png  il est très important de personnaliser le nom de votre poste car par défaut si vous ne faite rien, votre poste aura comme nom de machine (hostname) "Kickseed", dans l’idée ou vous souhaiteriez intégrer ces machines à un réseau d’entreprise (AD, LDAP ou autres) cela posera problème car chaque hôte doit être unique.

Introduction :[modifier]

Kickstart est un utilitaire permettant d’automatiser l’installation d’Ubuntu. Il facilite ainsi le déploiement d’un grand nombre de machines en offrant une installation rapide et une configuration personnalisable.

Kickstart est à l’origine le système d’automatisation d’installation de la société RedHat.

Le système d’automatisation des distributions Debian et de ses dérivées est Preseed. Réputé plus complexe que Kickstart, ce dernier ne bénéficie pas non plus d’un utilitaire graphique d’aide à la création des fichiers de description. La version de Kickstart présente dans Ubuntu et ses dérivées démultiplie les possibilités en permettant l’utilisation de commandes Preseed. Le portage de Kickstart sur les distributions de Canonical est incomplet. Des instructions telles que la mise à jour de distribution (prise en charge par apt), l’exclusion de paquets ou la configuration de X sont ainsi ignorées.
Kickstart permet également l’exécution de scripts avant installation, et surtout après installation. Cette fonctionnalité ouvre encore les possibilités de personnalisation du système installé. Les scripts de fin d’installation peuvent être « chrootés » ou non, c’est-à-dire exécutés dans le système nouvellement installé (chroot) ou dans le système temporaire mis en place pour l’installation (nochroot).

Utilisation :[modifier]

Déploiement par le réseau :

L’installation d’Ubuntu par le réseau (no PXE), offre de nombreux intérêts, dont celui d’obtenir une distribution parfaitement à jour dès la fin de l’installation.


Éléments nécessaires :[modifier]

Pour parvenir à réaliser une installation par le réseau, il est nécessaire d’avoir un serveur DNS, DHCP, HTTP (Apache 2 par exemple) et idéalement un mirroir local (apt-mirror)

Déroulement de l’installation via Netboot (no PXE) :

Voici le déroulement d’une installation par le réseau :

  • La nouvelle machine démarre sur le CD (personnalisé avec url du fichier ks.cfg) ou support USB – voir chapitre création d’un disque personnalisé
  • La nouvelle machine récupère sur le CD son image de boot– La nouvelle machine recupère depuis Web (http/https) le fichier Kickstart (ks.cfg)
  • La nouvelle machine effectue son installation en récupérant les paquets sur un serveur miroir local


Icon-quote.png  Voici nos besoins – il s’agit d’un exemple mais la plupart des configurations suivantes sont applicable dans un cas réel, à vous d’adapter ce fichier ks.cfg à votre goût et besoins
.
Icon-quote.png vous aurez besoin d’un outils pour chiffrer vos mot de passe : jouons "sécu.", sachant que ce fichier sera en libre accès sur votre serveur web afin que vos postes clients récupéré ce fichier facilement.

Génération de mots de passe chiffrés pour vos utilisateurs (md5) pour notre futur fichier ks.cfg:

 mkpasswd -5 mon_mot_de_passe
 $1$80Nijm1V$5A2dogEyv6A0fP04bH.UU.

bionic_ks.cfg :[modifier]

Voici ce que donne un fichier *.ks adapté au besoin décrit ci-dessus :

vim /var/www/html/ks/xenial_ks.cfg
 ###################################################################
 ## .:: Script d'installation Poste Ubuntu 18.04 LTS::.         ##
 ################################################################### 
 #                                                                 #
 ## .:: Script Kickstart crée par Florian PICARD ::.              ##
 ###################################################################
 # Script Kickstart pour installation automatisée                  #
 # de Ubuntu 16.04 LTS par le réseau (Net)                         #
 #                                                                 #
 # Options d'appel :                                               #
 # machine=nom_de_machine                                          #
 #                                                                 #
 #                                                                 #
 ###################################################################
 
 #System language
 lang fr_FR.UTF-8
 
 #Language modules to install
 langsupport fr_FR.UTF-8
 
 #System keyboard
 keyboard fr_oss
 
 #System mouse
 mouse
 
 #System timezone
 timezone Europe/Paris
 
 #Root password
 rootpw --iscrypted $1$ELOssq6u$uXJqRO.o9dAWUdR/enoIR1
 
 #Initial user
 user dinfadmin --fullname "Administrateur Dinfadom" --iscrypted --password $1$.n5hwhNK$CzDHSVxB7TO0/rV9P1RtF0
 
 #Reboot after installation
 reboot --eject
 
 #Use text mode install
 text
 
 #Install OS instead of upgrade
 install
 
 #Use Web installation
 url --url http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/
 
 #System bootloader configuration
 bootloader --location=mbr 
 
 #Clear the Master Boot Record
 zerombr yes
 
 #Partition clearing information
 clearpart --all --initlabel 
 
 #Disk partitioning information
 #ignoredisk --only-use=sda
 part / --fstype ext4 --size 50000 
 part swap --size 2048 
 part /home --fstype ext4 --size 1 --grow 
 
 #System authorization infomation
 auth --useshadow --enablemd5 
 
 #Network information
 network --bootproto=dhcp --device=eth0
 
 #Firewall configuration
 firewall --disabled 
 
 #X Window System configuration information
 xconfig --depth=32 --resolution=1024x768 --defaultdesktop=GNOME --startxonboot
 
 %packages
 ###################################################################
 ##    .::  Ubuntu Packages from officials repositories  ::.      ##
 ###################################################################
 
 @ubuntu-desktop
 
 thunderbird
 thunderbird-locale-fr
 
 filezilla
 mc
 vlc
 cifs-utils
 ssh
 remmina
 vim
 git
 tree
 zip
 nmap
 htop
 gparted
 sssd 
 sssd-tools 
 samba-common 
 samba-common-bin 
 samba-libs 
 adcli 
 ntp
 shotwell
 keepass2
 apt-transport-https
 hplip
 shutter
 gnome-tweak-tool
 bmon
 slurm
 iftop
 mysql-client
 xpad
 brasero
 gcc
 dos2unix
 acpi
 dnsutils
 screen
  
 %pre
 # Lecture et mise en variables des paramètres d'installation 
 # Switch TTY
 exec < /dev/tty6 > /dev/tty6
 
 # Switch to TTY6
 chvt 6
 # Vide la console
 clear
 
 # Charge clavier FR (AZERTY) #
 loadkeys fr
 
 # Demande le Hotname #
 echo "Veuillez saisir le Hostname ! "
 read machine
 echo "$machine" > /tmp/hostname_conf 
 
 # Affiche le résumé #
 echo " "
 echo " "
 echo "-------------------------------------------------"
 echo " Résumé d'installation"
 echo "-------------------------------------------------"
 echo " "
 echo " "
 echo "-------------------------------------------------"
 echo " Nom de la machine = $machine"
 echo " Nom de l'utilisateur = Dinfadom Admin"
 echo " Login = dinfadmin"
 echo " Mot de passe = mon_mot_de_passe"
 echo " Login Root = root"
 echo " Mot de passe Root = mon_mot_de_passe"
 echo " Distribution = Ubuntu 18.04 LTS"
 echo "-------------------------------------------------"
 echo " "
 echo " "
 echo "-------------------------------------------------"
 echo " L'installation écrasera irrémédiablement"
 echo " toutes les données du disque !"
 echo " "
 echo " Redémarrer la machine avant 30 secondes"
 echo " pour annuler l'installation !"
 echo "--------------------------------------------------"
 echo " "
 echo " "
 sleep 30
 
 # Reviens sur la console TTY1
 chvt 1
 %end
 
 %post --nochroot
 
 # Reprise de la définition des variables non renseignées car non conservées depuis /tmp/
 machine=$(cat /tmp/hostname_conf
 
 # Renomme de la machine
 sed -i "s/kickseed/$machine/g" /target/etc/hostname
 sed -i "s/kickseed/$machine/g" /target/etc/hosts
 %end
 
 %post
 ###################################################################
 ##     .:: Installation depuis d'autres dépots ::.               ##
 ###################################################################
 
 
 # Peek - Screen Recorder (Gif)
 add-apt-repository ppa:peek-developers/stable --yes
 apt update
 apt install -y peek
 
 # Atom
 add-apt-repository ppa:webupd8team/atom --yes
 apt update
 apt install -y atom
 
 # grub-customizer
 add-apt-repository ppa:danielrichter2007/grub-customizer --yes
 apt-get update
 apt-get install -y grub-customizer 
   
 # install HandBrake
 apt-add-repository ppa:stebbins/handbrake-releases --yes
 apt-get update -y
 apt-get install handbrake -y
 
 #Kerberos 5 - NI
 export DEBIAN_FRONTEND=noninteractive
 apt-get install krb5-user -y
 
 #motd
 echo Kickstarted : $(date +"%m-%d-%y") - $(date +"%H:%M") >> /etc/motd
 
 # Restaure le nom par défaut des interfaces (ethX)
 sed -i.back 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0"/g' /etc/default/grub
 update-grub
 
 # Référencement de notre miroir local
 cat > /etc/apt/sources.list << __EOF__
 #------------------------------------------------------------------------------#
 #                            LOCAL UBUNTU REPOS                                #
 #------------------------------------------------------------------------------#
 
 ###### Ubuntu Main Repos
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse 
 
 ###### Ubuntu Update Repos
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse 
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse  
 
 ###### Ubuntu Partner Repo
 deb http://mirror.dinfadom.com/mirror/archive.canonical.com/ubuntu bionic partner
 __EOF__
 
 apt update
 %end
 ## END ##

Au sujet du fichiers ks.cfg :[modifier]

%pre : suite d’instructions s’exécutant avant l’installation

Attention à cette étape les variables déclarées ne seront pas conservées – il est important de les conserver dans un fichier et de les rappeler au %post

%post : suite d’instructions s’exécutant après l’installation

Dans notre cas :

%pre :

  • Chargement clavier FR
  • Demande du hostname

%post --nochroot

  • Set le hostname

%post :

  • Installation des applications tièrces
  • Configuration d'APT : Configuration du miroir local.

Création d’un disque Ubuntu-Kickstart :[modifier]

Voici des scripts fournit par #tnishimura (github) pour la réalisation d’un CD personnalisé :

Récupération des scripts :[modifier]

git clone https://github.com/tnishimura/ubuntu-kickstart-cd-maker.git
cd ubuntu-kickstart-cd-maker

Créez l’arborescence nécessaire et éditez le fichier suivant :

mkdir -p /mnt/iso && mkdir -p /mnt/worked && chmod 777 -R /mnt/iso && chmod 777 -R /mnt/worked
vim make-automated-install-cd

Adapter le à nos besoins, voici les champs à personnaliser :

ISO=mini.iso
OUTPUT=autoinstall-ubuntu-18.04-amd64.iso
URL=http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
MOUNT=/mnt/iso
WORK=/mnt/worked

Récupérer le MD5 du mini iso depuis le mirror officiel ubuntu : https://help.ubuntu.com/community/Installation/MinimalCD

Créer le fichier suivant :

vim mini.iso.MD5SUM

et ajouter :

af6718f68740e0ced1cac363777a451a mini.iso

Puis modifier le fichier txt.cfg idéalement je vous invite à partir du fichier txt.cfg original présent dans l’iso original

vim txt.cfg

Adapter votre fichier comme suivant – donnez le chemin du fichier kickstart, dans notre cas : http://mirror.dinfadom.com/ks/xenial_ks.cfg :

default install
label install
menu label ^Install
menu default
kernel linux
append vga=788 initrd=initrd.gz ks=http://mirror.dinfadom.com/ks/xenial_ks.cfg -- 
label cli
menu label ^Command-line install
kernel linux
append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=initrd.gz --- quiet

Ensuite exécuter le script :

./make-automated-install-cd.sh

Le scripts met quelques minutes à généré votre ISO

Ensuite :

  • Déposer le dans le dossier /var/www/html/ISO/Netboot/ de votre serveur Web (mirror.dinfadom.com), au besoin créer l'arborescence.
  • Gravez l’ISO obtenue sur disque

  • Insérer votre disque dans le lecteur CD-ROM de votre poste client, puis booter dessus. (la connexion au réseau local est obligatoire)
  • Vérifiez que votre poste exécute correctement toutes les instructions et effectue correctement l’installation de notre Ubuntu « Kickstarté »

Enjoy :)