Useful Scripts
Intro:
This section contains the scripts I use to quickly redeploy the nodes. The \”Post Script\” could be improved a lot and also made more generic, however I\’ll leave that as a task to the user, I may update it at some point if I have a need.
Kickstart Script:
Cluster Kickstart Script (594 downloads )#platform=x86, AMD64, or Intel EM64T # System authorization information auth --useshadow --enablemd5 # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Use text mode install text #Skip Install Key key --skip # Firewall configuration firewall --disabled # Run the Setup Agent on first boot firstboot --disable # System keyboard keyboard uk # System language lang en_GB # Installation logging level logging --level=info # Use network installation url --url=http://kickstart.example.com/x64/rhs53 # Reboot after installation reboot #Root password #rootpw --iscrypted <encrypted Root passwd goes here> # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # System timezone timezone Europe/London # Install OS instead of upgrade install # Disk partitioning information part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100 part swap --bytes-per-inode=4096 --fstype="swap" --size=6144 part / --bytes-per-inode=4096 --fstype="ext3" --size=15360 part /tmp --bytes-per-inode=4096 --fstype="ext3" --grow --size=1 %post --interpreter=/bin/bash wget -O /tmp/bl1-cfg.sh http://kickstart.example.com/common/bl1-cfg.sh chmod 744 /tmp/bl1-cfg.sh sh /tmp/bl1-cfg.sh %packages @base @server-cfg @development-libs @development-tools @admin-tools @system-tools @legacy-software-development @legacy-software-support @editors @openfabrics-enterprise-distribution opensm
Post Script:
Cluster Post Script (629 downloads )This script should be run on each node after the OS is installed. It is for a 16 node cluster so you may need to change some of the lines (MAC, IP, Domain, etc).
bl1-cfg.sh:
#!/bin/bash
##
#
#
#Get MAC address
MACA=`cat /sys/class/net/eth0/address | tr \'[:lower:]\' \'[:upper:]\'`;
#General Network Settings
echo \'DHCP_HOSTNAME=$HOSTNAME.example.com\' >> /etc/sysconfig/network
sed -i \'s/V6=yes/V6=no/\' /etc/sysconfig/network
echo "NISDOMAIN=example" >> /etc/sysconfig/network
sed -i \'s/=yes/=no/\' /etc/sysconfig/network-scripts/ifcfg-eth0
#Setup VLAN
ifconfig eth0 up;
vconfig add eth0 2;
vconfig add eth0 3;
#Setup MainLAN VLAN
echo \'DEVICE=eth0.2\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.2
echo \'BOOTPROTO=dhcp\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.2
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.2
echo \'EERDNS=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.2
echo \'PEERNTPD=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.2
echo \'VLAN=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.2
#Allow pinging
echo \'0\' > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#Setup RDCLUSTER VLAN
echo \'DEVICE=eth0.3\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
echo \'BOOTPROTO=none\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
#Set IP Address & hostname based on MAC
if [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.1\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-01/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.2\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-02/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.3\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-03/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.4\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-04/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.5\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-05/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.6\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-06/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.7\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-07/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.8\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-08/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.9\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-09/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.10\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-10/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.11\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-11/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.12\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-12/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.13\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-13/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.14\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-14/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.15\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-15/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
elif [ "$MACA" == "00:00:00:00:00:00" ]; then
echo \'IPADDR=192.168.1.16\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
sed -i \'s/^HOSTNAME=localhost.localdomain/HOSTNAME=bl1-16/\' /etc/sysconfig/network
echo \'ONBOOT=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
else
echo \'ONBOOT=no\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
fi
echo \'NETMASK=255.255.255.0\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
echo \'VLAN=yes\' >> /etc/sysconfig/network-scripts/ifcfg-eth0.3
#Setup hosts file
echo \'192.168.1.1 bl1-01 bl1-01.example.com\' >> /etc/hosts
echo \'192.168.1.2 bl1-02 bl1-02.example.com\' >> /etc/hosts
echo \'192.168.1.3 bl1-03 bl1-03.example.com\' >> /etc/hosts
echo \'192.168.1.4 bl1-04 bl1-04.example.com\' >> /etc/hosts
echo \'192.168.1.5 bl1-05 bl1-05.example.com\' >> /etc/hosts
echo \'192.168.1.6 bl1-06 bl1-06.example.com\' >> /etc/hosts
echo \'192.168.1.7 bl1-07 bl1-07.example.com\' >> /etc/hosts
echo \'192.168.1.8 bl1-08 bl1-08.example.com\' >> /etc/hosts
echo \'192.168.1.9 bl1-09 bl1-09.example.com\' >> /etc/hosts
echo \'192.168.1.10 bl1-10 bl1-10.example.com\' >> /etc/hosts
echo \'192.168.1.11 bl1-11 bl1-11.example.com\' >> /etc/hosts
echo \'192.168.1.12 bl1-12 bl1-12.example.com\' >> /etc/hosts
echo \'192.168.1.13 bl1-13 bl1-13.example.com\' >> /etc/hosts
echo \'192.168.1.14 bl1-14 bl1-14.example.com\' >> /etc/hosts
echo \'192.168.1.15 bl1-15 bl1-15.example.com\' >> /etc/hosts
echo \'192.168.1.16 bl1-16 bl1-16.example.com\' >> /etc/hosts
# Create a nodelist file (useful for scripts that touch all teh nodes
echo \'bl1-01\' >> /etc/nodelist
echo \'bl1-02\' >> /etc/nodelist
echo \'bl1-03\' >> /etc/nodelist
echo \'bl1-04\' >> /etc/nodelist
echo \'bl1-05\' >> /etc/nodelist
echo \'bl1-06\' >> /etc/nodelist
echo \'bl1-07\' >> /etc/nodelist
echo \'bl1-08\' >> /etc/nodelist
echo \'bl1-09\' >> /etc/nodelist
echo \'bl1-10\' >> /etc/nodelist
echo \'bl1-11\' >> /etc/nodelist
echo \'bl1-12\' >> /etc/nodelist
echo \'bl1-13\' >> /etc/nodelist
echo \'bl1-14\' >> /etc/nodelist
echo \'bl1-15\' >> /etc/nodelist
echo \'bl1-16\' >> /etc/nodelist
#Send mail saying finished
HNAME=`cat /etc/sysconfig/network | egrep ^HOSTNAME | cut -f2 -d"="`;
address=`ifconfig eth0.2 | grep \'inet addr\'| awk \'{print $2}\'|sed -e "s/addr\\://"`
mail -s "Kickstart complete for $address at $HNAME" it@example.com < /etc/redhat-release