Cobbler PXE Setup – How to Configure Without Changing DHCP Server

cobblerdhcppxe-boot

In the past I've setup a PXE server several times by making the normal dhcp server return everything needed for network booting: both the regular ip config AND bootinfo in a single dhcp setup. That way it is easy to do.

According to the documentation i've read it (wikipedia has a nice summary) should be possible to have an unmodified dhcp server (for example if the admin at your location denies access) and a separate server that ONLY returns the boot information. This is usually called the "PXE server" or "Proxy DHCP" server. In the past I've seen (not used) this pxe server (last release was 5 years ago).

Yesterday I installed Cobbler to see what it really does. Now I would like to use it (love the ease of use) but modifying the 'main' dhcpd server to get PXE is not an option.

I've not been able to find any documentation on how I can get cobbler to run using a real PXE (==proxy dhcp) server.

Can this be done with cobbler?

Can I configure the isc dhcp server to behave as a PXE server (i.e. NO ip info, only boot info)?

Or should I go for a completely different approach (if so, what is your suggestion) ?

Thanks


New discovery I just made: The changelog for dnsmasq version 2.4.8 says:

"Proxy-DHCP, where dnsmasq just
supplies the PXE information and
another DHCP server does address
allocation, is also allowed."

VERY INTERESTING. Especially because cobbler can already control dnsmasq.


Update:

dnsmasq 2.51 will support this config that fully does the trick I wanted.

My /etc/cobbler/dnsmasq.template now looks like this:

# Cobbler generated configuration file for dnsmasq
# $date
#

# resolve.conf .. ?
#no-poll
#enable-dbus
read-ethers
addn-hosts = /var/lib/cobbler/cobbler_hosts

# Be a proxyDHCP server
dhcp-range=10.10.0.0,proxy

# Only respond to clients that are known (i.e present in /etc/ethers)
dhcp-ignore=#known

# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
expand-hosts
domain=test.basjes.nl,10.10.15.0

# Loads <tftp-root>/pxelinux.0 from dnsmasq TFTP server.
pxe-service=x86PC, "Boot PXELinux (=Cobbler controlled)", pxelinux ,$next_server

$insert_cobbler_system_definitions

Update: 2012-04-30

A few months ago I got an email from someone stating he couldn't get the above to work.
Turns out that I had done some fixing and changing of my own cobbler that I had forgotten about. So I provided the crucial fix to the mainline cobbler which has just become part of the trunk. I also created some additional supporting documentation.

Best Answer

What we do, is mount an ISO file we made, boot a kernel and initrd from that and have it load a kickstart from a central location. This kickstart file then point to a repository with RPM files, which could be your cobbler server.

I haven't got much experience with Cobbler (sadly), but maybe this is an option for you?