Kickstart - Ubuntu 16.04 LTS

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

Difficultés : Etoile.pngEtoile.pngEtoile.png


Kickstart et Netboot (noPXE)

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

Rappel des informations :

Serveur : mirror.dinfadom.com


Roles :

  • Apache2 (HTTP)

Emplacements des fichiers/dossiers :

  • /var/www/html : dossier racine de notre serveur http (apache2)
  • /var/www/html/scripts : emplacement des scripts de post installation
  • /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 :

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

  • Type d’installation : réseau (Netinstall)

  • Langue : FR

  • OS : ubuntu 16.04 LTS avec bureau Unity et SSH
  • architecture : amd64

  • Mot de passe pour root
  • Créer un utilisateur dinfadmin (sudoer) avec mot de passe.


Partitonnement automatique :

  • / – 50GB (ext4)

  • Swap – 2 GB (swapfs)
  • /home – reste du disque (ext4)
  • Changement du nom de la machine
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.
  • Ajout des scripsts /usr/bin – en vu d’un déploiement d'applications et intégration à un domaine AD, LDAP ou autres.

  • Affiche le résumé de la configuration (timeur de 30 Secondes)
Icon-quote.png  Scripts de déploiement stocké dans /usr/bin/
 - Ces scripts seront exécutés par un admin à l’issue de l’installation (dans le futur OS) – L’idée est pouvoir pousser des configurations et applications   pour le postes et l’utilisateur via une simple commande dans un terminal (comme un binaire classique)
Nous ferons appel à 3 scripts personnalisés qui seront téléchargés automatiquement depuis notre serveur http://mirror.dinfadom.com/scripts/ :
 
* menu.sh
* deploy.sh

* user_conf.sh

Icon-quote.png J'ai dédié un article complet à ces scripts et leur fonctionnement (non abordé dans celuis-ci) - Voici le lien : ici

Introduction :

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 :

Déploiement par le réseau :

L’installation d’Ubuntu par le réseau (no PXE), avec ou sans connexion internet, 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 :

Pour parvenir à réaliser une installation par le réseau, il est nécessaire d’avoir un serveur DNS, DHCP, HTTP (Lighttpd ou 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) – voir chapitre création d’un disque personnalisé

  • La nouvelle machine récupère sur le CD son image de boot
– La nouvelle machine prend sur le serveur http 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.

xenial_ks.cfg :

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

vim /var/www/html/ks/xenial_ks.cfg
 ###################################################################
 ## .:: Script d'installation Poste Ubuntu 16.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
 
 #Package install information
 %packages
 @ubuntu-desktop
 ssh
 
 %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 16.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
 
 %post --nochroot
 # Reprise de la définition des variables non renseignées car non conservées depuis /tmp/
 machine=$(cat /tmp/hostname_conf)
 
 # Modification des dépots
 cat > /target/etc/apt/sources.list << eof
 ########################################
 #                                                                                     #
 # Dépots Ubuntu 16.04 LTS                                         #
 # (Xenial)                                                                       #
 # Dinfadom.com                                                           #
 #                                                                                    #
 ########################################
 ## Dépôts officiels ##
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial main
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial restricted
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial universe
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial multiverse

 #Debian - Installation - Netboot et PXE
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial main/debian-installer
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial restricted/debian-installer

 # Dépôts Updates
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-updates main
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-updates restricted
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-updates multiverse
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-updates universe

 # Dépôts Security
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ xenial-security main
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ xenial-security restricted
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ xenial-security universe
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ xenial-security multiverse

 deb http://mirror.dinfadom.com/mirror/security.ubuntu.com/ubuntu xenial-security main
 deb http://mirror.dinfadom.com/mirror/security.ubuntu.com/ubuntu xenial-security restricted
 deb http://mirror.dinfadom.com/mirror/security.ubuntu.com/ubuntu xenial-security universe
 deb http://mirror.dinfadom.com/mirror/security.ubuntu.com/ubuntu xenial-security multiverse

 ### Dépôts Backports ##
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-backports main
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-backports restricted
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-backports universe
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu xenial-backports multiverse

 ### Dépôt commercial ##
 deb http://mirror.dinfadom.com/mirror/archive.canonical.com/ubuntu xenial partner
 
 eof
 
 # Suppression des paquets non souhaités
 chroot /target apt-get -y remove empathy-common
 chroot /target apt-get -y remove gbrainy
 chroot /target apt-get -y remove gnome-games-common
 chroot /target apt-get -y remove gwibber-service
 chroot /target apt-get -y remove pidgin
 chroot /target apt-get -y remove pitivi
 chroot /target apt-get -y remove transmission-common
 
 # Renommage de la machine
 sed -i "s/kickseed/$machine/g" /target/etc/hostname
 sed -i "s/kickseed/$machine/g" /target/etc/hosts  
 
 
 # création du script de fin de déploiement (OS)
 cat > /target/usr/bin/dinfadom_menu << eof
 #!/bin/bash
 wget -P /tmp http://mirror.dinfadom.com/scripts/menu.sh
 chmod +x /tmp/dmenu.sh
 . /tmp/menu.sh
 sleep 5
 rm /tmp/menu.sh
 eof
 chmod 777 /target/usr/bin/dinfadom_menu
 
 # création du script de fin de déploiement (OS)
 cat > /target/usr/bin/dinfadom_deploy << eof
 #!/bin/bash
 wget -P /tmp http://mirror.dinfadom.com/scripts/deploy.sh
 chmod +x /tmp/deploy.sh
 . /tmp/deploy.sh
 sleep 5
 rm /tmp/deploy.sh
 eof
 chmod 755 /target/usr/bin/dinfadom_deploy
 
 # création du script de fin de déploiement (AD,LDAP ou autres)
 cat > /target/usr/bin/dinfadom_user_pref << eof
 #!/bin/bash
 wget -P /tmp http://mirror.dinfadom.com/scripts/user_conf.sh
 chmod +x /tmp/user_conf.sh
 . /tmp/user_conf.sh
 sleep 5
 rm /tmp/user_conf.sh
 eof
 chmod 755 /target/usr/bin/dinfadom_user_pref
 ## END ##

Au sujet du fichiers ks.cfg :

%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 :

  • Supprime les paquets non requis

  • Renomme le poste
  • 
Créer les scripts suivants :
    • dinfadom_menu
    • dinfadom_deploy

    • dinfadom_user_pref

Création d’un disque Ubuntu-Kickstart :

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

Récupération des scripts :

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-16.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 :)