Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:repository_ausliefern_centos_7_-_kickstart

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:repository_ausliefern_centos_7_-_kickstart [2014/09/22 20:38] – [Beispiel: Einfach] klaustachtler:repository_ausliefern_centos_7_-_kickstart [2014/09/22 21:29] (aktuell) – [Beispiel: %pre] klaus
Zeile 844: Zeile 844:
 ... ...
 %pre %pre
-#!/bin/sh+#!/bin/bash
 ... ...
 ... ...
Zeile 990: Zeile 990:
  
 ############################################################################## ##############################################################################
-Pre install commands and options                                           #+Include or Exclude package groups and packages                             #
 ############################################################################## ##############################################################################
 %packages %packages
Zeile 1026: Zeile 1026:
  
 Alle Erklärungen der einzelnen Parameter stehen als Kommentar über dem jeweiligen Kommando bzw. der jeweiligen Option. Alle Erklärungen der einzelnen Parameter stehen als Kommentar über dem jeweiligen Kommando bzw. der jeweiligen Option.
 +
 +==== Passwort Generierung ====
  
 :!: **HINWEIS** - Eine Besonderheit stellt jedoch die Hinterlegung der Passwörter für das :!: **HINWEIS** - Eine Besonderheit stellt jedoch die Hinterlegung der Passwörter für das
Zeile 1051: Zeile 1053:
 $6$UCTF/Mlu3QxBWSOC$g0myUt95Bf/06SojJz8kqX4DAZEf1aBvSAT7pl6tIFbI.l1BBBYhb2oVZQ.hU9E1/..MTYhNZla3HNOp7Kal.1 $6$UCTF/Mlu3QxBWSOC$g0myUt95Bf/06SojJz8kqX4DAZEf1aBvSAT7pl6tIFbI.l1BBBYhb2oVZQ.hU9E1/..MTYhNZla3HNOp7Kal.1
 </code> </code>
 +
 +==== Beispiel %packages ====
 +
 +Nachfolgendes Beispiel zeigt, wie die Paketauswahl der während der Installation zu installierenden Pakete erstellt werden kann. Hierbei soll
 +  - eine **Paketgruppe** mit dem Namen ''@core''
 +  - mehrere **Pakete** mit unten stehenden Namen
 +installiert werden.
 +
 +(**Nur relevanter Ausschnitt**)
 +<code>
 +##############################################################################
 +# Include or Exclude package groups and packages                             #
 +##############################################################################
 +%packages
 +@core
 +acpid
 +bind-utils
 +chrony
 +iptables-services
 +man
 +net-tools
 +telnet
 +unzip
 +vim
 +wget
 +xinetd
 +yum-plugin-changelog
 +yum-plugin-priorities
 +
 +%end
 +...
 +</code>
 +
 +==== Beispiel: %pre ====
 +
 +Mit nachfolgender Konfiguration, kann dynamisch ermittelt werden, wie viele **Netzwerkkarten** auf dem Server vorhanden sind, um diese mit entsprechenden Parameter zur Laufzeit der Installation in eine Datei zu schreiben um dann die Datei **Anstelle der Konfiguration** im Abschnitt **network...** einzusetzen, wie nachfolgende Konfigurationsbeispiele zeigen:
 +
 +(**Nur relevanter Ausschnitt**)
 +<code>
 +...
 +# Set the network device eth0.
 +# network --device eth0 --bootproto=static --onboot=on --ip 192.168.0.10 --netmask 255.255.255.0 --gateway 192.168.0.1 --nameserver 192.168.0.1,192.168.0.20 --noipv6 --hostname rechner10.dmz.tachtler.net
 +# Set the network device as include file, generated in %pre. Additional changes will be made later.
 +%include /tmp/anaconda-network.cfg
 +...
 +</code>
 +
 +(**Nur relevanter Ausschnitt**)
 +<code bash>
 +...
 +##############################################################################
 +# Pre install commands and options                                           #
 +##############################################################################
 +#!/bin/bash
 +# Determine how much network devices are availiable and generate the kickstart definition 'network=...' from them.
 +DEVICES=`cat /proc/net/dev | sed 's/:.*//g' | grep eth | sed 's/^\ *//'`
 +for DEV in $DEVICES
 +do
 +        echo "network --device ${DEV} --bootproto=static --onboot=on --ip 10.0.${DEV:3}.99 --netmask 255.255.255.0 --gateway 10.0.${DEV:3}.10 --nameserver 10.0.${DEV:3}.20,10.0.${DEV:3}.10 --noipv6 --hostname rechnerxx.tachtler.net" >> /tmp/anaconda-network.cfg
 +done
 +%end
 +...
 +</code>
 +
 +==== Beispiel: %post ====
 +
 +Nachfolgendes Beispiel zeigt, wie mit Hilfe von ''bash''-Skripten die Konfiguration von [[http://www.gnu.org/software/grub/|GRUB 2]] entsprechend angepasst werden kann, damit beim Starten eine **Bildschirmauflösung von 1024x768 beim "booten"** beibehalten wird. 
 +
 +Dazu passt das ''bash''-Skript die Konfigurationsdateien
 +  * ''/etc/default/grub'' an und
 +  * ''/boot/grub2/grub.cfg''
 +wird durch Umwandlung dieser mit dem entsprechenden Befehl, neu generiert.
 +
 +<code bash>
 +...
 +##############################################################################
 +# Post install commands and options                                          #
 +##############################################################################
 +%post --log=/root/anaconda-post.log
 +#!/bin/bash
 +
 +# Source function library.
 +. /etc/init.d/functions
 +
 +# Source variable declarations.
 +VAR_DATE=$(date +"%Y-%m-%d")
 +VAR_HOST=$(hostname -s)
 +
 +echo "+-------------------------------------------------------------------------+"
 +echo "| GRUB2                                                                   |"
 +echo "+-------------------------------------------------------------------------+"
 +# Source variable declarations.
 +FILE_GRUB="/etc/default/grub"
 +FILE_GRUB2_CFG="/boot/grub2/grub.cfg"
 +
 +echo -n "Copy $FILE_GRUB to $FILE_GRUB.orig"
 +cp -a $FILE_GRUB{,.orig}
 +if [ "$?" != "0" ]; then
 +        failure; echo
 +else
 +        success; echo
 +fi
 +
 +cat <<ETCDEFAULTGRUB >>$FILE_GRUB
 +# Tachtler: $VAR_DATE
 +GRUB_CMDLINE_LINUX_DEFAULT="video=1024x768"
 +GRUB_GFXMODE=1024x768
 +GRUB_GFXPAYLOAD_LINUX=keep
 +ETCDEFAULTGRUB
 +
 +sed -i '/^GRUB_DISABLE_SUBMENU=true/ a# default: GRUB_TERMINAL_OUTPUT="console"' $FILE_GRUB
 +sed -i '/^GRUB_DISABLE_SUBMENU=true/ a# Tachtler' $FILE_GRUB
 +sed -i 's/^GRUB_TERMINAL_OUTPUT="console"/# GRUB_TERMINAL_OUTPUT="console"/' $FILE_GRUB
 +sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="net.ifnames=0 /' $FILE_GRUB
 +sed -i 's/rhgb //g' $FILE_GRUB
 +
 +echo -n $"Configured $FILE_GRUB"
 +success; echo
 +
 +echo -n "Copy $FILE_GRUB2_CFG to $FILE_GRUB2_CFG.orig"
 +cp -a $FILE_GRUB2_CFG{,.orig}
 +if [ "$?" != "0" ]; then
 +        failure; echo
 +else
 +        success; echo
 +fi
 +
 +grub2-mkconfig -o /boot/grub2/grub.cfg
 +
 +echo -n $"Generated file $FILE_GRUB2_CFG"
 +success; echo
 +
 +%end
 +</code>
 +
 +Die Angabe neben dem Befehl **''%post''**, welche da lautet
 +  * **''--log=/root/anaconda-post.log''**
 +erstellt eine Log-Datei im Verzeichnis ''/root'' mit dem Namen ''anaconda-post.log'', worin Informationen zur Ausführung protokolliert werden können und ggf. Fehler die durch Ausführung der Befehle zustande kommen, ersichtlich werden.
  
tachtler/repository_ausliefern_centos_7_-_kickstart.1411411103.txt.gz · Zuletzt geändert: 2014/09/22 20:38 von klaus