install
text
cdrom
reboot --eject
lang en_US.UTF-8
keyboard us
rootpw root
timezone --utc Etc/UTC
firewall --disabled
selinux --disabled
unsupported_hardware
skipx
# NEVER ever place zerombr here, it breaks automated installation
%include /tmp/bootloader.ks
%include /tmp/partition.ks
# PREINSTALL SECTION
# HERE ARE COMMANDS THAT WILL BE LAUNCHED BEFORE
# INSTALLATION PROCESS ITSELF
%pre
#!/bin/sh
# hard drives
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
echo > /tmp/partition.ks
echo "partition /boot --onpart=/dev/${tgtdrive}3" >> /tmp/partition.ks
echo "partition pv.001 --ondisk=${tgtdrive} --size=30000 --grow" >> /tmp/partition.ks
echo "volgroup os pv.001" >> /tmp/partition.ks
echo "logvol swap --vgname=os --recommended --name=swap" >> /tmp/partition.ks
echo "logvol / --vgname=os --size=10000 --name=root --fstype=ext4" >> /tmp/partition.ks
echo "logvol /var --vgname=os --size=10000 --percent 60 --grow --name=var --fstype=ext4" >> /tmp/partition.ks
echo "logvol /var/log --vgname=os --size=4096 --percent 40 --grow --name=varlog --fstype=ext4" >> /tmp/partition.ks
# bootloader setting
echo "bootloader --location=mbr --driveorder=${tgtdrive} --append=' biosdevname=0 crashkernel=none'" > /tmp/bootloader.ks
%end
%packages --nobase --excludedocs
wget
git
yum
cobbler
cobbler-web
createrepo
mkisofs
syslinux
debmirror
pykickstart
cman
bind
rsync
dhcp
xinetd
tftp-server
gcc
httpd
libselinux-python
python-setuptools
python-devel
mysql-devel
mysql-server
mysql
MySQL-python
redis
mod_wsgi
rabbitmq-server
nfs-utils
%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
########################### post install before chroot ####################
%post --nochroot --log=/mnt/sysimage/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/source" "${SOURCE}"
########################### post install after chroot ####################
%post --log=/root/anaconda-post-after-chroot.log
#!/bin/bash
set -x
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() {
echo GATEWAY=$gw >> /etc/sysconfig/network
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
echo "nameserver $gw" >> /etc/resolv.conf
fi
}
# Default FQDN
hostname="compass"
for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done
domain=$hostname
gw=$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'`
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 $install_intf $install_ip $install_netmask $install_hwaddr
save_nic_cfg $mgmt_intf $mgmt_ip $mgmt_netmask $mgmt_hwaddr
save_gateway
# already chroot
SOURCE=/tmp/source
FS=/tmp/fs
echo
mkdir -p ${SOURCE}
mkdir -p ${FS}
repodir="/var/lib/install_iso"
# Copying Centos files
mkdir -p ${repodir}
cp -r ${SOURCE} ${repodir}/source
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
chmod 700 /root/.ssh
cat ${SOURCE}/bootstrap/boot.rsa.pub >> /root/.ssh/authorized_keys
cp -rf ${SOURCE}/compass/* /opt
cp -rf ${SOURCE}/repos/* /opt
cp -rf ${SOURCE}/loaders.tar.gz /opt
mkdir -p /var/www
cp -rf ${SOURCE}/pip /var/www/pip
cp -rf ${SOURCE}/guestimg /var/www/guestimg
# 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