2.4. Création de modèles


La création de modèles Kickstart (de l'anglais, « Kickstart templating ») vous permet d'inclure des variables, des snippets ainsi que des structures de contrôle telles que les boucles for et les instructions if dans les fichiers kickstart. Cela est effectué à l'aide de l'outil cheetah.
Diverses raisons expliquent pourquoi la création de modèles peut se révéler utile :
  • La ré-utilisation d'une section particulière d'un kickstart, comme la section de partitionnement d'un disque, entre de multiples kickstarts.
  • Pour effectuer certaines actions %post de manière consistante sur de multiples kickstarts.
  • Pour définir un snippet sur les multiples rôles des serveurs, comme un serveur DNS, un serveur proxy et un serveur web. Par exemple, un serveur web pourrait posséder le snippet suivant défini :
    httpd
    mod_ssl
    mod_python
    
    Copy to Clipboard Toggle word wrap
    Pour créer un profil de serveur web, incluez le snippet du serveur web dans la section %package du fichier kickstart. Pour qu'un profil soit à la fois un serveur web et un serveur proxy, veuillez inclure les deux snippets dans la section paquetage. Pour ajouter un autre paquetage au snippet du serveur web, par exemple mod_perl, mettez le snippet à jour, et tous les profils qui utilisent ce snippet seront dynamiquement mis à jour.
Variables

La création de modèles vous permet de définir une variable à utiliser dans un fichier kickstart. Les variables sont sujettes à une forme d'héritage qui leur permet d'être définies à un niveau et d'être outrepassées à des niveaux plus bas. Ainsi, si une variable est définie au niveau du système, la même variable définie au niveau du profil ou aux niveaux de l'arborescence kickstart sera outrepassée. De la même manière, si une variable est définie au niveau du profil, la même variable au niveau de l'arborescence kickstart sera outrepassée.

Note

Remarquez que les variables d'arborescences kickstart ne peuvent pas être définies pour les arborescences kickstart générées automatiquement comme celles qui sont créées lorsqu'une synchronisation du Satellite est effectuée.
Snippets

Les snippets réutilisent des portions de code entre de multiples modèles kickstart. Ils peuvent s'étirer sur de nombreuses lignes et inclure des variables. Ils peuvent être inclus dans un profil kickstart à l'aide du texte $SNIPPET('snippet_name'). Un snippet peut être créé pour une liste de paquetages, pour un script %post, ou pour tout texte qui aurait été normalement inclus dans un fichier kickstart.

Pour gérer les snippets, naviguez sur Systèmes Kickstart Snippets Kickstart.
La page Snippets Kickstart affiche plusieurs snippets par défaut qui ne peuvent pas être modifiés, mais qui peuvent être utilisés par n'importe quelle organisation. Les snippets par défaut peuvent être utilisés dans des kickstarts qui ont été écrits ou téléchargés sur le serveur RHN Satellite. Les snippets par défaut sont stockés sur le système de fichiers du serveur RHN Satellite dans /var/lib/cobbler/snippets/. Il existe un modèle provenant d'un kickstart de type Assistant situé dans /var/lib/rhn/kickstarts/wizard/, ce qui explique les différents snippets par défaut et leur utilisation.
Le snippet redhat_register est un snippet par défaut qui est utilisé pour enregistrer des machines sur un serveur RHN Satellite en tant que partie d'un kickstart. Il utilise une variable nommée redhat_management_key pour enregistrer la machine. Pour utiliser le snippet définissez la variable redhat_management_key au niveau du système, du profil, ou de la distribution, puis ajoutez $SNIPPET('redhat_register') à une section %post du kickstart. Tous les kickstarts de type Assistant générés par le serveur RHN Satellite inclueront déjà ce snippet dans la section %post.
L'onglet Snippets personnalisés vous permet de voir et de modifier les snippets créés pour être utilisés par l'organisation. De nouveaux snippets peuvent être créés en cliquant sur Créer un nouveau snippet. Les snippets personnalisés sont stockés dans le répertoire /var/lib/rhn/kickstarts/snippets/. RHN Satellite stocke les snippets pour différentes organisations dans différents répertoires, avec un nom de fichier similaire au suivant, où le 1 représente l'ID de l'organisation :
$SNIPPET('spacewalk/1/snippet_name')
Copy to Clipboard Toggle word wrap
Pour déterminer le texte à utiliser pour insérer le snippet dans le kickstart, cherchez la colonne Macro snippet dans la liste de snippets ou sur la page des détails du snippet.

Note

Des snippets existent au niveau global et ne partagent pas la même structure d'héritage que les variables. Cependant, les variables peuvent être utilisées dans les snippets pour modifier la manière dont ils se comportent lorsque différents systèmes requièrent un kickstart.

Figure 2.3. Snippets Kickstart

Caractères spéciaux d'échappement

Les caractères $ et # sont utilisés pendant la modélisation pour spécifier les variables et les structures de contrôle. Si ces caractères sont nécessaires pour toute autre chose dans un script, ils devront être placés dans un séquence d'échappement afin de ne pas être reconnus en tant que variables. Ceci peut être accompli de plusieurs manières :

  • En plaçant une barre oblique inverse (\) devant chaque instance de $ ou de # que vous souhaitez ignorer pendant la modélisation.
  • En incluant la totalité du script dans #raw ... #end raw
    Tous les scripts %pre et %post créés à l'aide de kickstarts de type Assistant sont inclus par défaut dans #raw...#end raw. Ceci peut être basculé avec la case à cocher Template (Modèle), disponible lors de la modification d'un script %post ou %pre.
  • En incluant #errorCatcher Echo dans la première ligne du snippet.

Exemple 2.1. Caractères spéciaux d'échappement dans les modèles

Cet exemple décrit comment créer une séquence d'échappement de caractères spéciaux dans des modèles kickstart.
Le script bash suivant doit être inséré dans une section %post :
%post 
echo $foo > /tmp/foo.txt
Copy to Clipboard Toggle word wrap
Si le caractère $ n'est pas « échappé », le moteur de modélisation essaiera de trouver une variable nommée $foo et échouera car foo n'existe pas en tant que variable.
La plus simple manière de mettre le caractère $ dans une séquence d'échappement est d'utiliser une barre oblique (\) :
%post 
echo \$foo > /tmp/foo.txt
Copy to Clipboard Toggle word wrap
Ceci causera à \$foo d'être rendu en tant que $foo.
Une autre méthode consiste à inclure le script bash entier dans #raw ... #end raw comme suit :
%post 
#raw  
echo $foo > /tmp/foo.txt 
#end raw
Copy to Clipboard Toggle word wrap
La méthode finale est d'inclure #errorCatcher Echo dans la première ligne du modèle kickstart. Celle-ci ordonne au moteur de modélisation d'ignorer toute variable qui n'existe pas et d'imprimer le texte tel qu'il est. Cette option est déjà incluse dans les kickstarts de type Assistant et peut être incluse dans tout kickstart brut (de l'anglais, « raw kickstart ») que vous créez manuellement.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2026 Red Hat