My experience with Cobbler has been good but several facts have made me switch:
So I have moved to Foreman because it handles provisioning, puppet reporting and is actively developed.
The documentation for the installation is well done. The only problem is that I cannot integrate the foreman puppet modules into my own due to a name conflict with the puppet module.
I also am not a big fan of the webUI, but haven’t had time to look into the foreman CLI.
The three levels in Cobbler made sense to me: distro, profile, system. With foreman there are more levels to setup
Once that is all setup, the networking needs to setup and the host added to the correct subnet. To verify that everything was setup correctly, I had to look in /var/lib/dhcp/dhcpd.leases to see the dhcp entry and /var/lib/tftpboot to make sure PXE template was correct.
I liked how easy it was to preview the kickstart/preseed templates.
Cobbler had the Koan tool which completely automated the next part. Back to the manual process for creating Xen PV guests. I tried installing the guests as HVM with the PXE boot process, but on RedHat 5.10, the non-xen kernel got installed and the resulting image was useless.
The pv pxe boot template:
name = "vm"
kernel = "/etc/xen/pxe/RedHat-5.10-i386-vmlinuz"
ramdisk = "/etc/xen/pxe/RedHat-5.10-i386-initrd.img"
extra = "ks=http://foreman/unattended/provision ksdevice=bootif network kssendmac"
disk = [ "phy:<disk>,xvda,w" ]
vif = [ 'mac=<mac>,bridge=<bridge>' ]
vfb = [ 'type=vnc,vncunused=1,vnclisten=0.0.0.0' ]
on_shutdown = 'destroy'
on_reboot = 'destroy'
This will install the system and destroy itself when finished. Otherwise, the vm will reboot, attempt reinstall and fail when Foreman blocks access to the kickstart template
The pv boot template:
name = "vm"
bootloader = "/usr/lib/xen-4.1/bin/pygrub"
disk = [ "phy:<disk>,xvda,w" ]
vif = [ 'mac=<mac>,bridge=<bridge>' ]
vfb = [ 'type=vnc,vncunused=1,vnclisten=0.0.0.0' ]
I didn’t realize how much I had been spoiled with Koan. This is doable, but takes some time. It can be automated, but I don’t do it often enough to justify fully automating the process.
The RedHat 6.x kernel works both in hvm and pv mode, so the hvm mode can be used to install the rootfs. This avoids the coping step of the kernel and initrd.
The hvm template:
name = "vm"
builder = 'hvm'
kernel = "/usr/lib/xen-4.1/boot/hvmloader"
boot = 'nc'
disk = [ "phy:<disk>,xvda,w" ]
vif = [ 'mac=<mac>,bridge=<bridge>' ]
vfb = [ 'type=vnc,vncunused=1,vnclisten=0.0.0.0' ]
on_shutdown = 'destroy'
on_reboot = 'destroy'
The pv boot template is the same.