#version=DEVEL
# System authorization information
auth --useshadow --enablemd5
# Install OS instead of upgrade
install
# License agreement
eula --agreed
# Use text mode install
text
# Firewall configuration
firewall --disabled
firstboot --disable
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
network --onboot no --device eth0 --bootproto dhcp --noipv6
network --onboot no --device eth1 --bootproto dhcp --noipv6
network --onboot no --device eth2 --bootproto dhcp --noipv6
# System language
lang en_US.UTF-8
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# Root password
rootpw root
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,sshd"
# Do not configure the X Window System
skipx
# System timezone
timezone America/Los_Angeles --isUtc
# System bootloader configuration

%include /tmp/bootloader.ks

# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
%include /tmp/partition.ks

%pre
#!/bin/sh

set -x -v
exec 1>/tmp/ks-pre.log 2>&1
# Once root's homedir is there, copy over the log.
while : ; do
    sleep 10
    if [ -d /mnt/sysimage/root ]; then
        cp /tmp/ks-pre.log /mnt/sysimage/root/
        logger "Copied %pre section log to system"
        break
    fi
done &

# hard drivedd
drives=(`ls -1 /sys/block | grep "sd\|hd\|vd\|cciss"`)
default_drive=${drives[0]}

for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done

tgtdrive=$default_drive
format_confirmed="no"

if [ ${#drives[@]} -lt 1 ]; then
    exec < /dev/tty3 > /dev/tty3 2>&1
    chvt 3
    clear
    echo
    echo '********************************************************************'
    echo '*                            E R R O R                             *'
    echo '*                                                                  *'
    echo '*      There is no suitable media available for installation.      *'
    echo '*                Please attach a drive and try again.              *'
    echo '*                                                                  *'
    echo '********************************************************************'
    echo
    read -p "Press Enter to shut down the system: " _
    poweroff
fi

# verify tgtdrive is at least 30GB
tgtdrivesize=$(( $(cat "/sys/class/block/${tgtdrive}/size") / 2 / 1024 ))
if [ $tgtdrivesize -lt 30720 ]; then
    exec < /dev/tty3 > /dev/tty3 2>&1
    chvt 3
    clear
    echo
    echo '********************************************************************'
    echo '*                            E R R O R                             *'
    echo '*                                                                  *'
    echo '*  Your disk is under 30GB in size. Installation cannot continue.  *'
    echo '*             Restart installation with a larger disk.             *'
    echo '*                                                                  *'
    echo '********************************************************************'
    echo
    read -p "Press Enter to restart: " _
    reboot
fi

vgremove -ff os
dd if=/dev/zero of=/dev/${tgtdrive} bs=10M count=10
sleep 3

hdparm -z /dev/${tgtdrive}
parted -s /dev/${tgtdrive} mklabel gpt
parted -a none -s /dev/${tgtdrive} unit MiB mkpart primary 0 24
parted -s /dev/${tgtdrive} set 1 bios_grub on
parted -a none -s /dev/${tgtdrive} unit MiB mkpart primary fat16 24 224
parted -s /dev/${tgtdrive} set 2 boot on
parted -a none -s /dev/${tgtdrive} unit MiB mkpart primary 224 424
sleep 3
hdparm -z /dev/${tgtdrive}

# partition
cat << EOF > /tmp/partition.ks
part swap --asprimary --fstype="swap" --ondisk=sda --size=3072
part /boot --asprimary --fstype="ext3" --ondisk=sda --size=500
part pv.64 --fstype="lvmpv" --ondisk=sda --size=$((tgtdrivesize-3600))
volgroup os --pesize=4096 pv.64
logvol /var  --fstype="ext3" --grow --percent=40 --name=varvol --vgname=os
logvol /tmp  --fstype="ext3" --grow --percent=5 --name=tmpvol --vgname=os
logvol /  --fstype="ext3" --grow --percent=50 --name=rootvol --vgname=os
logvol /home  --fstype="ext3" --grow --percent=5 --name=homevol --vgname=os
EOF

# bootloader setting
echo "bootloader --location=mbr --driveorder=${tgtdrive} --append=' biosdevname=0 crashkernel=none'" > /tmp/bootloader.ks
%end

%post
echo -e "modprobe nf_conntrack_ipv4\nmodprobe nf_conntrack_ipv6\nmodprobe nf_conntrack_tftp\nmodprobe nf_nat_tftp" >> /etc/rc.modules
chmod +x /etc/rc.modules
echo -e "net.nf_conntrack_max=1048576" >> /etc/sysctl.conf
mkdir -p /var/log/coredump
echo -e "kernel.core_pattern=/var/log/coredump/core.%e.%p.%h.%t" >> /etc/sysctl.conf

chmod 777 /var/log/coredump
echo -e "* soft core unlimited\n* hard core unlimited" >> /etc/security/limits.conf
%end

%post --nochroot --log=/root/anaconda-post-before-chroot.log
#!/bin/sh
set -x
SOURCE="/mnt/sysimage/tmp/source"
for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done

mkdir -p "${SOURCE}"
mount -o bind "/mnt/install/source" "${SOURCE}"
%end

%post --logfile /var/log/post_install.log
set -x -v
exec 1>/root/ks-post.log 2>&1

function save_nic_cfg() {
    scrFile="/etc/sysconfig/network-scripts/ifcfg-$1"
    sed -i -e 's#^\(HOSTNAME=\).*$#\1'"$hostname"'#' /etc/sysconfig/network
    grep -q "^\s*$2\s+$hostname" /etc/hosts || echo "$2 $hostname" >> /etc/hosts

    echo DEVICE=$1> $scrFile
    echo ONBOOT=yes >> $scrFile
    echo NM_CONTROLLED=no >> $scrFile
    echo HWADDR=$4 >> $scrFile
    echo USERCTL=no >> $scrFile
    echo PEERDNS=no >> $scrFile
    echo BOOTPROTO=static >> $scrFile
    echo IPADDR=$2 >> $scrFile
    echo NETMASK=$3 >> $scrFile
}

function save_gateway() {
    if [[ -z $external_gw ]]; then
        echo GATEWAY=$gw >> /etc/sysconfig/network
    else
        echo GATEWAY=$external_gw  >> /etc/sysconfig/network
    fi
    search="domain $domain\nsearch $domain"
    echo -e "${search}\nnameserver 127.0.0.1" > /etc/resolv.conf
    [ $dns1 ] && echo -e "${search}\nnameserver $dns1" > /etc/resolv.conf
    [ $dns1 ] && echo -e "${search}\nnameserver $dns1" > /etc/dnsmasq.upstream
    [ $dns2 ] && echo "nameserver $dns2" >> /etc/resolv.conf
    [ $dns2 ] && echo "nameserver $dns2" >> /etc/dnsmasq.upstream

    if [[ -z "$dns1" && -z "$dns2" ]]; then
        if [[ -z $external_gw ]]; then
            echo "nameserver $gw" >> /etc/resolv.conf
        else
            echo "nameserver $external_gw" >> /etc/resolv.conf
        fi
    fi
}
# Default FQDN
hostname="compass"

for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done
domain=$hostname
gw=$gw
ex_gw=$external_gw

install_ip=$install_ip
install_netmask=$install_netmask
install_intf="eth1"
#install_hwaddr=`ifconfig $install_intf | grep -i hwaddr | sed -e 's#^.*hwaddr[[:space:]]*##I'`

save_nic_cfg $install_intf $install_ip $install_netmask $install_hwaddr

mgmt_ip=$mgmt_ip
mgmt_netmask=$mgmt_netmask
mgmt_intf="eth0"
#mgmt_hwaddr=`ifconfig $mgmt_intf | grep -i hwaddr | sed -e 's#^.*hwaddr[[:space:]]*##I'`

save_nic_cfg $mgmt_intf $mgmt_ip $mgmt_netmask $mgmt_hwaddr

external_ip=$external_ip
external_netmask=$external_mask
external_intf="eth2"
#external_hwaddr=`ifconfig $external_intf | grep -i hwaddr | sed -e 's#^.*hwaddr[[:space:]]*##I'`

save_nic_cfg $external_intf $external_ip $external_netmask $external_hwaddr

save_gateway

SOURCE=/tmp/source
FS=/tmp/fs

mkdir -p ${SOURCE}
mkdir -p ${FS}

repodir="/var/lib/install_iso"

# Copying Centos files
mkdir -p ${repodir}

cp -rf ${SOURCE} ${repodir}/source
rm -rf ${repodir}/source/bootstrap/ \
       ${repodir}/source/compass/ \
       ${repodir}/source/guestimg/ \
       ${repodir}/source/pip/ \
       ${repodir}/source/repos

mkdir -p /root/.ssh /var/www /opt/cobbler
chmod 700 /root/.ssh

cat ${SOURCE}/bootstrap/boot.rsa.pub >> /root/.ssh/authorized_keys
cp -rf ${SOURCE}/compass/* /opt
cp -rf ${SOURCE}/repos/cobbler/* /opt/cobbler/
cp -rf ${SOURCE}/ansible/* /opt
cp -rf ${SOURCE}/repos/* /opt
cp -rf ${SOURCE}/loaders.tar.gz /opt
cp -rf ${SOURCE}/pip /var/www/pip
cp -rf ${SOURCE}/pip-openstack /var/www/pip-openstack
cp -rf ${SOURCE}/guestimg /var/www/guestimg

tar -zxvf ${SOURCE}/app_packages/packages.tar.gz -C /var/www

# Prepare local repository specification
rm /etc/yum.repos.d/CentOS*.repo
cat > /etc/yum.repos.d/install_iso.repo << EOF
[install_iso]
name=local repo
baseurl=file:$repodir/source
gpgcheck=0
EOF

# Disable GSSAPI in ssh server config
sed -i -e "/^\s*GSSAPICleanupCredentials yes/d" -e "/^\s*GSSAPIAuthentication yes/d" /etc/ssh/sshd_config
sed -i 's/Defaults    requiretty/#Defaults    requiretty/g' /etc/sudoers
sed -i 's/^UseDNS/#UseDNS/g' /etc/ssh/sshd_config
echo "UseDNS no" >> /etc/ssh/sshd_config

# End post_install_network_config generated code
%end

%packages --nobase
@core
%end