Spacewalk : Création de script avec mix de snippet et code.

# Brève présentation de Spacewalk

Spacewalk est un outil fort pratique pour ceux qui veulent gérer un parc de machine linux RedHat, ou dérivé. Grâce à Spacewalk vous pouvez suivre les mises à jour à effectuer sur chacune de vos machines, paramétrer des mises à jour automatiques, gérer vos dépôts, gérer des kickstarts et les utiliser par PXE ou sur un hyperviseur KVM/QEMU. Plus encore vous pouvez suivre des fichiers de configurations choisis et les administrer depuis Spacewalk. La dernière version 2.0 inclue même un support expérimentale des paquets deb et donc la possibilités de gérer les linux Debian et dérivés.

# Bref historique de Spacewalk

Initialement créé par RedHat sous le nom de RedHat Satellite qui permets aux entreprises gérant beaucoup de machines RedHat de pouvoir gérer leurs mises à jour avec en gros un proxy des dépôts RedHat hébergé en local. Le Satellite gère des copies de canaux logiciels RedHat relatifs aux systèmes enregistrés et permets à ceux-ci de se mettre à jour sans devoir se connecter à Internet pour récupérer X fois la même mise à jour. Spacewalk est le projet open-source qui est utilisé ensuite pour Satellite. Plus de détails…

Je ne reviendrais pas sur comment créé un kickstart avec Spacewalk, préférant vous renvoyer à la documentation officielle. Mais j’aimerais éclairer sur une partie peu claire à mon sens, comment utiliser et créer des scripts (pre ou post install) et utilisé les snipppets Kickstart fort pratique.

# Utilisation des snippets dans les scripts post et pre install des kickstarts

Spacewalk intègre cobbler pour gérer les kickstarts et de boot pxe. Cobbler permet de créer et gérer des templates kickstarts afin d’avoir des kickstarts très modulables avec la possibilité entre autres de créer des snippets pouvant être utiliser n’importe où dans le kickstart. Lors de la création du kickstart cobbler remplacera les snippets par leur contenu.

Après quelques tests sur les snippets dans les scripts pre-post install d’un kickstart, on s’aperçoit qu’il faut obligatoirement cocher la case Template dans l’éditeur de script pour utiliser les snippets. Que pour chaque snippet, il est obligatoire de mettre les balises #raw et #end raw en début et fin de chaque snippets. Enfin, si le script est un mix entre des utilisations de snippets et du code utilisant des variables dans ces snippets ou tout simplement du code indépendant, il faut rajouter les balises #raw et #end raw autour de ce code.

# Explication détaillée

On trouve plus d’explications dans la documentation de déploiement d’une version antérieur pour RH Satellite. Et lire un peu la partie dans la documentation de Cobbler pour bien comprendre. Il est spécifier que par défaut les scripts post et pre sont ont déjà positionné des balises #raw et #end raw en début et fin de script. On ne s’en rends donc pas compte lors d’une première utilisation basique de cette fonctionnalité. Seulement lorsque ces balises sont positionnées alors les variables snippets ne sont pas remplacer par leur contenu. Pour enlever ces balises, il faut cocher la case Template et à ce moment là, la variable sera remplacée.
C’est aussi pour ça que si vous voulez mélanger snippets et code, il faudra entourer le code des balises #raw, #end raw.

# Exemples

Snippet pour régler la swappiness nommé swappiness :

#raw
echo "vm.swappiness = 20" >> /etc/sysctl.conf
#end raw

Script bash post install simple :

useradd user1
echo "vm.swappiness = 20" >> /etc/sysctl.conf

Script utilisant le snippet pour régler la swappiness, avec la case Template de cocher :

$SNIPPET('spacewalk/1/swappiness')

Script utilisant le snippet swappiness pour régler la swappiness et ajout de l’utilisateur user1, avec la case Template de cocher :

#raw
useradd user1
#end raw
$SNIPPET('spacewalk/1/swappiness')