#! /bin/bash # setup script that is only run once at boot time # set up an FAI install server NORMAL='\E(B\E[m' RED='\E[31m' GREEN='\E[32m' set -o pipefail # setup network ifup eth0 sleep 8 [ -x /etc/init.d/nscd ] && /etc/init.d/nscd restart echo "=================================" >/dev/console echo "Setting up the FAI install server" >/dev/console echo "This will take a few minutes" >/dev/console echo "=================================" >/dev/console . /etc/fai/fai.conf . /etc/fai/nfsroot.conf # copy the simple examples and pimp my config space if [ ! -d "$FAI_CONFIGDIR/class" ]; then mkdir -p $FAI_CONFIGDIR cp -a /usr/share/doc/fai-doc/examples/simple/* $FAI_CONFIGDIR ainsl /srv/fai/config/class/FAIBASE.var "^LOGUSER=fai" myip=$(ip addr show up| grep -w inet | cut -d t -f 2 | cut -d ' ' -f 2 | cut -d / -f 1 | grep -v 127.0.0.1) echo "APTPROXY=http://$myip:3142" >> /srv/fai/config/class/DEBIAN.var # determine a fast mirror for Ubuntu list=$(curl -s http://mirrors.ubuntu.com/mirrors.txt) mirror=$(netselect $list | awk '{print $2}') sed -i -e "s#MIRRORURL#$mirror#" /srv/fai/config/files/etc/apt/sources.list/UBUNTU fi # set the LOGUSER, wo we get all the logs from our install clients ainsl /etc/fai/fai.conf "^LOGUSER=fai" # make index, then import the packages from the CD mirror apt-get update curl -fs 'http://127.0.0.1:3142/acng-report.html?doImport=Start+Import&calcSize=cs&asNeeded=an#bottom' >/dev/null # setup the FAI server, including creating the nfsroot, use my own proxy export APTPROXY="http://127.0.0.1:3142" fai-setup -fvB /var/tmp/base.tar.xz 2>&1 if [ $? -eq 0 ]; then rm /var/tmp/base.tar.xz echo "" echo "================================================" >/dev/console echo -e "Setting up the FAI server was ${GREEN}successful${NORMAL}" >/dev/console echo "================================================" >/dev/console echo "" sleep 10 else echo "" echo "==================================================" >/dev/console echo -e "${RED}ERROR${NORMAL}: Setting up the FAI install server ${RED}FAILED${NORMAL}!" >/dev/console echo "Read /var/log/fai/fai-setup.log for more debugging" >/dev/console echo "==================================================" >/dev/console echo "" sleep 10 exit 99 fi cat <> /srv/fai/nfsroot/etc/fai/fai.conf # use short hostname instead of FQDN export HOSTNAME=\${HOSTNAME%%.*} echo \$HOSTNAME > /proc/sys/kernel/hostname EOF # create default pxelinux boot configuration fai-chboot -o default # create a template for booting the installation fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config jessie.tmpl # Since we do not know the MAC address, our DHCP cannot provide the hostname. # Therefore we do explicitly set the hostname fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config -k hostname=xfcehost xfcehost fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config -k hostname=demohost demohost for c in {01..10}; do fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config -k hostname=client$c client$c done fai-monitor > /var/log/fai/fai-monitor.log & # move me away mv $0 /var/tmp exit 0