2.4. Verwenden von Vorlagen
for-Schleifen und if-Anweisungen in Ihre Kickstart-Dateien einzubeziehen. Ermöglicht wird dies durch das cheetah-Tool.
- Wenn Sie einen bestimmten Abschnitt einer Kickstart-Datei, wie z.B. den Abschnitt zur Festplattenpartitionierung, über mehrere Kickstarts hinweg wiederverwenden möchten.
- Wenn Sie bestimme Aktionen in
%postkonsistent über mehrere Kickstarts hinweg durchführen möchten. - Wenn Sie ein Snippet über mehrere Server-Rollen (wie z.B. DNS-Server, Proxy-Server, und Webserver) hinweg definieren möchten. Beispielsweise könnte das folgende Snippet für den Webserver definiert sein:
httpd mod_ssl mod_python
httpd mod_ssl mod_pythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow Wenn Sie ein Webserver-Profil erstellen möchten, fügen Sie das Webserver-Snippet im%package-Abschnitt Ihrer Kickstart-Datei ein. Wenn Sie möchten, dass dieses Profil sowohl ein Webserver als auch ein Proxy-Server ist, können Sie beide Snippets im Paketabschnitt einfügen. Möchten Sie später ein weiteres Paket zum Webserver-Snippet hinzufügen, wie z.B.mod_perl, brauchen Sie nur das Snippet selbst zu aktualisieren, und alle Profile, die dieses Snippet enthalten, würden automatisch ebenfalls aktualisiert.
Vorlagen ermöglichen es Ihnen, eine Variable zu definieren, die in der gesamten Kickstart-Datei verwendet wird. Variablen unterliegen einer Art Vererbung, die es ermöglicht, eine Variable auf einer Ebene einzustellen, diese jedoch auf darunterliegenden Ebenen außer Kraft zu setzen. Wird also eine Variable auf Systemebene eingestellt, setzt diese dieselbe Variable auf Profilebene oder Kickstart-Baumebene außer Kraft. Wird eine Variable auf Profilebene eingestellt, setzt diese dieselbe Variable auf Kickstart-Baumebene außer Kraft.
Anmerkung
Mithilfe von Snippets werden Stücke von Code über mehrere Kickstart-Vorlagen hinweg wiederverwendet. Snippets können sich über mehrere Zeilen erstrecken und Variablen enthalten. Sie können mithilfe des Texts $SNIPPET('snippet_name') in ein Kickstart-Profil eingefügt werden. Sie können ein Snippet für eine Paketliste erstellen, für ein %post-Skript, oder für jeden anderen Text, der normalerweise in einer Kickstart-Datei enthalten ist.
/var/lib/cobbler/snippets/ gespeichert. Unter /var/lib/rhn/kickstarts/wizard/ finden Sie eine Vorlage für einen Assistenten-Kickstart, die die verschiedenen Standard-Snippets und deren Verwendung erklärt.
redhat_register Snippet kann dazu verwendet werden, um im Rahmen des Kickstarts Rechner bei einem RHN Satellite Server zu registrieren. Es verwendet eine Variable namens redhat_management_key, um den Rechner beim Server zu registrieren. Setzen Sie die redhat_management_key-Variable auf System-, Profil- oder Distributionsebene und fügen anschließend $SNIPPET('redhat_register') zum %post-Abschnitt Ihrer Kickstart-Datei hinzu. Alle Assistenten-Kickstarts, die vom RHN Satellite Server generiert wurden, verfügen in ihrem %post-Abschnitt bereits über dieses Snippet.
/var/lib/rhn/kickstarts/snippets/-Verzeichnis gespeichert. RHN Satellite speichert Snippets für verschiedene Organisationen in verschiedenen Verzeichnissen; angepasste Snippets werden demnach mit einem Dateinamen ähnlich dem folgenden gespeichert, wobei 1 die Organisations-ID ist:
$SNIPPET('spacewalk/1/snippet_name')
$SNIPPET('spacewalk/1/snippet_name')
Anmerkung
Abbildung 2.3. Kickstart-Snippets
Die $ und # Zeichen werden bei der Erstellung von Vorlagen zur Spezifizierung von Variablen und der Flusskontrolle verwendet. Falls Sie diese Zeichen in einem Skript für andere Zwecke benötigen, müssen sie mit Fluchtsymbolen versehen werden, damit sie nicht als Variablen gedeutet werden. Sie erreichen dies auf mehrere Arten:
- Setzen Sie ein Backslash-Zeichen (
\) vor jedes$oder#Zeichen, das in der Vorlage ignoriert werden soll. - Schließen Sie das gesamte Skript in
#raw ... #end rawein.Alle%preund%postSkripte, die mithilfe des Kickstart-Assistenten erzeugt werden, sind standardmäßig von#raw...#end raweingeschlossen. Dies kann geändert werden mittels des Template-Auswahlkästchens beim Bearbeiten eines%postoder%pre-Skripts. - Fügen Sie
#errorCatcher Echoin der ersten Zeile des Snippets ein.
Beispiel 2.1. Fluchtsymbole für Sonderzeichen in Vorlagen
%post-Abschnitt eingefügt werden:
%post echo $foo > /tmp/foo.txt
%post
echo $foo > /tmp/foo.txt
$-Zeichen nicht mit einem Fluchtsymbol versehen, wird die Templating-Engine versuchen, eine Variable namens $foo zu finden und wird schließlich scheitern, da foo nicht als Variable existiert.
$-Zeichen mit einem Fluchtsymbol zu versehen, ist mithilfe des Backslash-Zeichens (\):
%post echo \$foo > /tmp/foo.txt
%post
echo \$foo > /tmp/foo.txt
\$foo als $foo gerendert.
#raw ... #end raw, und zwar wie folgt:
%post #raw echo $foo > /tmp/foo.txt #end raw
%post
#raw
echo $foo > /tmp/foo.txt
#end raw
#errorCatcher Echo in der ersten Zeile Ihrer Kickstart-Vorlage ein. Dies weist die Templating-Engine an, jegliche nicht existierenden Variablen zu ignorieren und den Text wie vorliegend auszugeben. Diese Option ist bereits in den Assistenten-Kickstarts enthalten und kann auch in die manuell erstellten Raw-Kickstarts eingefügt werden.