KVM: Install CentOS / RHEL Using Kickstart File (Automated Installation)

by on January 12, 2010 · 6 comments· LAST UPDATED February 1, 2011

in , ,

Kickstart is a network installation system for RHEL, Fedora and CentOS Linux distributions. Another good option is Cobbler which is a Linux provisioning server that centralizes and simplifies control of services including DHCP, TFTP, and DNS for the purpose of performing network-based operating systems installs. In this tutorial, I'm going to show you how to use kickstart file to install CentOS.

Create Kickstart file

An automated installation method to install CentOS / Fedora or RHEL is recommend to automate procedure. Using kickstart, a system administrator can create a single file containing the answers to all the questions that would normally be asked during a typical RHEL Linux installation. Use kickstart GUI tool called "Kickstart Configurator" (run system-config-kickstart command to start the tool) to create a file called ks.cfg as follows:

auth  --useshadow  --enablemd5
bootloader --location=mbr
zerombr
clearpart --all --initlabel
text
firewall --enabled --port=22:tcp
firstboot --disable
keyboard us
network --device eth0 --bootproto static --ip 10.10.21.76 --netmask 255.255.255.240 --gateway 10.10.21.100 --nameserver 10.10.21.1,10.10.21.2 --noipv6
network --device eth1 --bootproto static --ip 123.1.2.6 --netmask 255.255.255.240 --gateway 123.1.2.100 --nameserver 10.10.21.1,10.10.21.2 --hostname centos.nixcraft.in --noipv6
lang en_US
logging --level=info
url --url=http://mirrors.nixcraft.in/centos/5.5/os/x86_64/ 
reboot
rootpw --iscrypted $1$somepassword
selinux --enforcing
skipx
timezone  America/New_York
install
part / --bytes-per-inode=4096 --fstype="ext3" --grow --size=1
part swap --recommended
%packages
@core
--nobase
%post
(
echo '10.0.0.0/8 via 10.10.21.100' > /etc/sysconfig/network-scripts/route-eth0
sed -i 's/LABEL=\//& console=ttyS0/' /etc/grub.conf
echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >> /etc/inittab
echo "ttyS0" >> /etc/securetty
echo 'IPV6INIT=no' >> /etc/sysconfig/network
echo 'install ipv6 /bin/true' >> /etc/modprobe.conf
) 1>/root/post_install.log 2>&1

Upload this file to a web server as ks.cfg. You can use nfs server too.

virt-install: Install CentOS using Kickstart

Type the following command:
# virt-install \
-n centos \
-r 2048 \
--vcpus=1 \
--os-variant=rhel5.4 \
--accelerate \
-v \
-w bridge:br0 \
-w bridge:br1 \
--disk path=/emc/kvm/centos.img,size=100 \
-l http://mirrors.nixcraft.in/centos/5.5/os/x86_64/ \
-nographics \
-x "ks=http://10.10.21.3/static/ks.cfg ksdevice=eth0 ip=10.10.21.76 netmask=255.255.255.240 dns=10.10.21.1 gateway=10.10.21.100"

The -x option is used to pass additional kernel command line to the installer when performing a guest install. The ks option sets ks file location and rest are networking options so that installer can fetch ks.cfg and do automated installation for you.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 6 comments… read them below or add one }

1 Nitin December 13, 2011 at 5:45 am

Hi there,

Great articles! I’d like to auto install (pxe boot) all my KVM based VMs, using my Satellite/Cobbler server. But the problem seems to be that , to add a server into Cobbler we need “MAC” addresses of both interfaces in advance (so we could assign the DHCP/Static IP accordingly). Is it possible to create dummy VMs or assign pre-defined MAC during VM auto pxe install?

Thanks,
Nitin

Reply

2 cod3fr3ak February 9, 2012 at 1:44 am

I do believe it is possible to generate macs before you create the VM.

Reply

3 Davie Crocket March 31, 2013 at 10:42 pm

Why is the IP info required in both the kickstart as well as the virt-install? This doesn’t make sense to me.

Reply

4 ilanni September 3, 2014 at 9:39 am

because this IP address with ks.cfg as the same.
this file ks.cfg vm use the static IP Address,the dhcp server not use in the lan

Reply

5 manish singh August 9, 2013 at 10:27 am

Pardon my english…
what i think, installation with cobbler, in kickstart file, boot proto should be DHCP, and virt-install should have –pxe and remove ks line to get boot with LAN, now it’s work of PXE booted boot loader to provide ks file ex. “ks=http://10.10.21.3/static/ks.cfg”

hypothetical:
# virt-install
-n centos
-r 2048
–vcpus=1
–os-variant=rhel5.4
–accelerate
-v
-w bridge:br0
-w bridge:br1
–disk path=/emc/kvm/centos.img,size=100
-nographics
–pxe

Now VM booted with LAN, pxe provided IP from DHCP, VM gets a splash screen (boot loader .. see below)
# cat /var/lib/tftpboot/pxelinux.cfg/default
blah blah……
append initrd=images/centos/6.2/os/x86_64/images/pxeboot/initrd.img linux ks=http://10.10.21.3/static/ks.cfg

Pl. contribute your views, that will definitely get clear view at least mine or may be on more person

Reply

6 manish singh August 9, 2013 at 10:35 am

may be network args also need to provide

found this info after some googling..

Stop Default Network
# virsh net-destroy default
# virsh net-edit default
# virsh net-dumpxml default

default
566eadfd-74f3-4e0b-af85-0876d99541a1

# virsh net-start default

Add below switch with virt-install
-w network=default

Reply

Leave a Comment

Tagged as: , , , , , , ,

Previous Faq:

Next Faq: