2.4. Création de modèles
for et les instructions if dans les fichiers kickstart. Cela est effectué à l'aide de l'outil cheetah.
- 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
%postde 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
httpd mod_ssl mod_pythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pour créer un profil de serveur web, incluez le snippet du serveur web dans la section%packagedu 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 exemplemod_perl, mettez le snippet à jour, et tous les profils qui utilisent ce snippet seront dynamiquement mis à jour.
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
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.
/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.
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.
/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')
$SNIPPET('spacewalk/1/snippet_name')
Note
Figure 2.3. Snippets Kickstart
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 rawTous les scripts%preet%postcréé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%postou%pre. - En incluant
#errorCatcher Echodans la première ligne du snippet.
Exemple 2.1. Caractères spéciaux d'échappement dans les modèles
%post :
%post echo $foo > /tmp/foo.txt
%post
echo $foo > /tmp/foo.txt
$ 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.
$ dans une séquence d'échappement est d'utiliser une barre oblique (\) :
%post echo \$foo > /tmp/foo.txt
%post
echo \$foo > /tmp/foo.txt
\$foo d'être rendu en tant que $foo.
#raw ... #end raw comme suit :
%post #raw echo $foo > /tmp/foo.txt #end raw
%post
#raw
echo $foo > /tmp/foo.txt
#end raw
#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.