diff options
Diffstat (limited to 'util')
-rw-r--r-- | util/ks.cfg | 255 | ||||
-rwxr-xr-x | util/log.sh | 22 |
2 files changed, 277 insertions, 0 deletions
diff --git a/util/ks.cfg b/util/ks.cfg new file mode 100644 index 00000000..e3008819 --- /dev/null +++ b/util/ks.cfg @@ -0,0 +1,255 @@ +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}/ansible/* /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 + +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 + diff --git a/util/log.sh b/util/log.sh new file mode 100755 index 00000000..f54fdca5 --- /dev/null +++ b/util/log.sh @@ -0,0 +1,22 @@ +#!/bin/bash +reset=`tput sgr0` +red=`tput setaf 1` +green=`tput setaf 2` +yellow=`tput setaf 3` + +function log_info() { + echo -e "${green}$*${reset}" +} + +function log_warn() { + echo -e "${yellow}$*${reset}" +} + +function log_error() { + echo -e "${red}$*${reset}" +} + +function log_progress() { + echo -en "${yellow}$*\r${reset}" +} + |