Hetzner - DokuWiki

Hetzner.Kickstarter
#!/bin/bash

# Author Carsten Jenner
# Licensed under the GPL
# 2016-07-30 syncope/cj CentOS 7.2 DHCP, Kickstart per HTTP, DHCP

### CONFIG HERE ##########################################################

PASSWORD=`cat /dev/urandom | tr -cd a-kp-tw-z2-9 | head -c 8`
BOOTOPTIONS="noipv6 selinux=0 inst.resolution=800x600 inst.lang=de_DE inst.keymap=de"
KS_FILE="ks.cfg"

### CONFIG HERE ##########################################################

USAGE="Usage:
  sh Hetzner.Kickstarter <http://.../kickstart.cfg> [<password>]"
NUMARGS=$#
if [ $NUMARGS -lt 1 ]; then echo "$USAGE"; exit 1; fi
if [ $NUMARGS -gt 1 ]; then PASSWORD=$2; fi

case "$1" in
  http*)
    KS_URL=$1
    ;;
  *)
    echo "$USAGE"; exit 1
    ;;
esac

echo "### Downloading Kickstart Configuration from $KS_URL ..."
wget -q $KS_URL -O $KS_FILE
MIRROR=`grep -- '--url' ks.cfg |perl -p -e 's/.*--url.(.*)$/\1/'`

IP=`ifconfig eth0 |grep 'Bcast' |tr ':' ' ' |awk '//{print $3}'`
MASK=`ifconfig eth0 |grep 'Bcast' |tr ':' ' ' |awk '//{print $7}'`
GATE=`netstat -rn |grep '^0.0.0.0' |awk '//{print $2}'`
DNS=`grep nameserver /etc/resolv.conf |head -1 |awk '//{print $2}'`
REMOTE=`last -i |grep pts |grep 'logged in' |awk '{print $3}'`
#SERVER_NAME=`host $IP |perl -pi -e 's/.* (.*)\.$/\1/'`
#SHORT_NAME=`echo $SERVER_NAME |cut -d '.' -f 1`

cat <<EOD
IP=$IP
MASK=$MASK
GATE=$GATE
DNS=$DNS
REMOTE=$REMOTE
MIRROR=$MIRROR
EOD

echo ""
echo "### Eventuell vorhandene LVM- und RAID-Devices deaktivieren ..."
lvscan 2>/dev/null| awk '{print "lvremove -f "$2}' |sh
vgremove 2>/dev/null
mdadm --stop --scan
umount /dev/sda[1-9] 2>/dev/null

echo ""
echo "### Partitionstabelle von /dev/sda loeschen und Boot-Partitionen neu anlegen... "
sgdisk --zap-all /dev/sda >/dev/null
sgdisk --new 1:2048:4095 -c 1:"BIOS Boot Partition" -t 1:ef02 /dev/sda >/dev/null
sgdisk --new 2:4096:500M -c 2:"Linux Boot Partition" /dev/sda >/dev/null

echo ""
echo "### Filesystem auf /dev/sda2 erzeugen..."
mkfs.ext2 -F -q /dev/sda2 || exit

echo "### Partition /dev/sda2 als /boot mounten..."
mount -t ext2 /dev/sda2 /boot  || exit

echo ""
echo "### Installation von Kernel und Ram-Disk"

cd /boot
wget  -nv $MIRROR/isolinux/vmlinuz || exit
wget  -nv $MIRROR/isolinux/initrd.img || exit

echo ""
echo "### Grub2 Installation..."
grub-install --no-floppy /dev/sda

echo ""
echo "### Grub Konfiguration nach /boot/grub/grub.cfg schreiben..."
cat >/boot/grub/grub.cfg <<EOF
set default=0
set timeout=5
menuentry "CentOS Install VNC Kickstart" {
set root=(hd0,2)
linux /vmlinuz $BOOTOPTIONS vnc vncconnect=$REMOTE vncpassword=$PASSWORD nameserver=$DNS inst.ks=$KS_URL
initrd /initrd.img
}
EOF

#
cat <<EOF
### Done.

Server-Name:       $SERVER_NAME
Server-IP:         $IP
VNC-Passwort:      $PASSWORD
VNC-Listener:      $REMOTE

* Notieren Sie sich das Passwort!
* Starten Sie ihren VNC Listening-Viewer auf Port 5500 (Portweiterleitung im Router?)
* Führen Sie mit "reboot" einen Server-Neustart aus!
EOF



© 2019. Hetzner Online GmbH. Alle Rechte vorbehalten.