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:40] – [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 900: Zeile 900:
 Einträge enthält. Einträge enthält.
  
-==== Beispiel ====+==== Beispiel: Einfach ====
  
 <code ini> <code ini>
Zeile 990: Zeile 990:
  
 ############################################################################## ##############################################################################
-Pre install commands and options                                           #+Include or Exclude package groups and packages                             #
 ############################################################################## ##############################################################################
 %packages %packages
Zeile 1053: 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.1411411217.txt.gz · Zuletzt geändert: 2014/09/22 20:40 von klaus