Xenserver: How To Create A Custom Kickstart Template via the CLI

100-Frankenstein-Smiley-Free-Halloween-Vector-Clipart-IllustrationIf you are reading this post, then you should know that I have been spending a lot of time as of late trying to learn XenServer, and I am doing my best to get Xenserver to do my evil bidding.

When I first took a look at XenServer I was dissapointed to find that you cannot PXE boot a VM unless you use the "Other Install Media" Template. However, when you use this template you are not building a fully paravirtualized vm, and you loose some functionality on your vm (like hot adding a virtual disk).

So lets say you want to kickstart a Centos 5 64-bit vm. Traditionally in XenServer,  you need to create a new vm based on the "Centos 5 (64-bit)" template and then point your vm to your kickstart media and ks config file. Being that this is a manual process, and I am trying to automate building virtual machines, I started searching for a better way to make Xenserver do what I wanted… I think I may have accomplished my goal.

So the first thing I did was create a new vm via cli. This step spits out a UUID for your new vm.

#xe vm-install template=CentOS\ 5\ \(64-bit\) new-name-label=Centos5.4_Kickstart

Now setup your boot params to point your new vm to your kickstart config file

#xe vm-param-set uuid=0415bc6c-6129-9bc2-26d7-e15625cf85a1 PV-args="ks=http://<my_kickstart_server>/kickstart/ks/centos5-u4_x86_64.cfg ksdevice=eth0"

Then tell your new vm where to find its install DVD.

#xe vm-param-set uuid=6aaf7e10-59e4-9895-9c7b-6eee32eab9f1 other-config:install-repository=http://<my_kickstart_server>/centos5-u4-x86_64/disc1/

Now figure out the UUID of your Kickstart VLAN

#xe network-list

Create a VIF (virtual interface) on your kickstart vlan.

#xe vif-create vm-uuid=0415bc6c-6129-9bc2-26d7-e15625cf85a1 network-uuid=f5a61f5b-f17c-ac40-0995-c41c3a5a3ea3 device=0

Now on the next step i cheated – I used XenCenter to quick create a vm based on my new template.

Now when I create a new vm from this template, it startes to kickstart on boot. My next steps are to create multiple templates, each based on my different kickstart images/configs. Then figure out how to set their ips and hostnames.

Hopefully that post is coming soon.

 

3 thoughts on “Xenserver: How To Create A Custom Kickstart Template via the CLI

  1. IÍ„’m trying to boot with kickstart file, buth when I add “ks=url”, nothing happens. Is it simple like that, or there is something else to set? I have watched access and error log on the kickstart server, but there is no request to the cfg file. Could you “kick me” to right direction? 🙂

    • Tom.

      Here is an example from my currently deployed lab kickstart server.

      ks=http://10.1.0.106/ks/conf/CentOS-6.6-x86_64-minimal.ks

      This format is correct for http. If you are using ftp however it should be similar. If you have verified that the path to your kickstart file is correct, you may want to check file permissions. The file should be world writable. SELinux could also be an issue, so you may want to disable it and test your kick again.

  2. Hi,
    thanks for reply. There is another problem, I suppose. I’m using file on http server, so there shouldn’t be a problem.
    So I’ve created run-only-once-daemon, which can handle the boot parameter like a kickstart script.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.