[Spacewalk-list] Kickstart Profiles and Naming (Francisco Manuel Cardoso)

Corey Hemminger corey.hemminger at nativex.com
Thu May 8 16:33:03 UTC 2014


I have scripts in my kickstart profile that allows me to customize the server and it registers with spacewalk with the correct name then. This works with text install and uses the current terminal anaconda is using. Haven't tested with GUI install. 

Allows config of hostname, network bonding, and can be expanded for any other configuration variables needed. Simply asks all inputs at the beginning and transfers variables into chroot environment to be used by post install scripts to finsh configuring the server. Not the prettiest script but it works.

Make sure to add "%include /tmp/network" without quotes to Kickstart > profile> advanced options tab > Custom Options.

Pre Script:
#########################################################################################
curTTY=`tty`
exec < $curTTY > $curTTY 2> $curTTY

echo
echo -n "Starting Pre Install Script"

echo
echo -n "Configure the Server"

hwaddr3=`ifconfig eth1 | grep -i hwaddr | sed -e 's#^.*hwaddr[[:space:]]*##I'`
hwaddr2=`ifconfig eth0 | grep -i hwaddr | sed -e 's#^.*hwaddr[[:space:]]*##I'`
dns1="10.x.x.x"
dns2="10.x.x.x"
device3="eth1"
device2="eth0"
device1="bond0"
gw=""
answer="n"
hostname2=""
netmask=""
ip=""

while [ x"$answer" != "xy" ] && [ x"$answer" != "xY" ]; do
        echo
        echo -n "enter hostname: "; read hostname2
        echo -n "enter ip adress: "; read ip
        echo -n "enter netmask: "; read netmask
        echo -n "enter default gateway: "; read gw
        echo

        echo You entered:
        echo -e "\thostname:            $hostname2"
        echo -e "\tip address:          $ip"
        echo -e "\tnetmask:             $netmask"
        echo -e "\tdefault gateway:     $gw"
        echo
        echo -n "Is this correct? [y/n] "; read answer
done

echo
echo -n "Setting Host Name to $hostname2"

echo "network --device eth0 --bootproto dhcp --hostname=${hostname2} --onboot=yes --noipv6" > /tmp/network

cat <<EOF > /tmp/variables
hostname2=$hostname2
ip=$ip
netmask=$netmask
gw=$gw
hwaddr3=$hwaddr3
hwaddr2=$hwaddr2
dns1=$dns1
dns2=$dns2
device3=$device3
device2=$device2
device1=$device1
EOF
#########################################################################################

Post Script: nochroot option checked.
#########################################################################################
cp /tmp/variables /mnt/sysimage/tmp/
#########################################################################################

Post Script:
#########################################################################################
curTTY=`tty`
exec < $curTTY > $curTTY 2> $curTTY

echo
echo -n "Starting Post Install Script"
. ./tmp/variables

echo
echo -n "Configuring the Server"
rhn-actions-control --enable-all
rhncfg-client get
rhn_check
sleep 5s

echo
echo -n "setting hostname"
sed -i -e 's#^\(HOSTNAME=\).*$#\1'"$hostname2"'#' /etc/sysconfig/network

echo
echo -n "configuring networking"
echo "alias bond0 bonding" > /etc/modprobe.d/bonding.conf

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$device2
DEVICE=$device2
BOOTPROTO=none
ONBOOT=yes
NM_Controlled=no
MASTER=$device1
SLAVE=yes
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
HWADDR=$hwaddr2
EOF

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$device3
DEVICE=$device3
BOOTPROTO=none
ONBOOT=yes
NM_Controlled=no
MASTER=$device1
SLAVE=yes
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
HWADDR=$hwaddr3
EOF

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$device1
DEVICE=$device1
BOOTPROTO=none
ONBOOT=yes
NM_Controlled=no
PEERDNS=yes
DEFROUTE=yes
USERCTL=no
BONDING_OPTS="mode=balance-alb miimon=100"
TYPE=Ethernet
IPV6INT=no
IPADDR=$ip
NETMASK=$netmask
GATEWAY=$gw
DNS1=$dns1
DNS2=$dns2
DOMAIN=teamfreeze.com
EOF

echo root:      root.linux at example.com >> /etc/aliases
newaliases
sysctl -w vm.max_map_count=131072

echo
echo -n "updating inittab to runlevel 3"
sed -i -e 's#^\(id:\).*$#\1'"3:initdefault:"'#' /etc/inittab

rm -rf /tmp/variables

touch /.autorelabel
echo "rhn-profile-sync" >> /etc/rc.local

echo
echo -n "Script Complete"
echo
read -p "Press Enter key to reboot..."
#########################################################################################

------------------------------

Message: 3
Date: Thu, 8 May 2014 11:32:47 +0100
From: "Francisco Manuel Cardoso" <francisco.cardoso at gmail.com>
To: <spacewalk-list at redhat.com>
Subject: [Spacewalk-list] Kickstart Profiles and Naming
Message-ID: <001a01cf6aa8$dbeb3ab0$93c1b010$@gmail.com>
Content-Type: text/plain; charset="us-ascii"

Hello,

 

After a bit of a rough patch implementing and getting used to the new 2 "interface" im left with a question.

When kickstating machines it seems to be possible to make them register to spacewalk on "boot", is there a way I can assign a pool of hostnames to the profiles so that they come out named and "in order" ?

 

Cheers

 

Francisco





More information about the Spacewalk-list mailing list