[nycbug-talk] PXE/TFTPd Sanity
pete at nomadlogic.org
Thu Dec 31 14:31:05 EST 2009
On Dec 30, 2009, at 11:33 AM, Isaac Levy wrote:
> Hi All,
> I've CC'd Pete here, because I'm hoping he can refresh my memory on stuff he showed us years ago... Sorry Pete- don't mean to call you out on list, but guess I am :)
> Anyhow, at work, we're heading toward the tipping point where we're going to drown without network installs (for fairly homogenous software, and nearly homegenous hardware). It's been quite some time since I've hacked around with PXE, (back then it was just for installing OpenBSD on Soekris boards), so I'm not totally clueless- but diving back into it I sure feel clueless :)
> Been spending a bunch of time digging through Wikipedia and the net at large, and still don't feel like I found the path foreword.
> Here's my questions, even just some URL's would make my day:
> - Has any unified software/packaging come about for doing network installs, or is it all still all just a matter of setting up TFTPD and a DHCP server?
> - Have any neat accounting utilities/database tools come along for storing MAC addresses, and their corresponding IP/boot-media info?
for my deployment servers I have standardized on cobbler. it runs on RHEL/Fedora (ugg) but scales quite well (read 20k + servers managed w/ no performance issues):
bells and whistles:
- cli + webUI
- manages dhcpd
- manages bind
- is written in its own API and supports xmlrpc
- written in python
- tight lib-virt integration (thats a linux'y API to support different hypervisor tech, currently speaks Xen and KVM)
--> so it doesn't matter if you are building a real "bare-metal" server of a VM
> Our reqs are simple: Set up a long-lasting PXE boot enviornment so we can install:
> + FreeBSD
> + OpenBSD
> + CentOS/Linux (our immediate need)
cobbler works great for CentOS/RHEL/Fedora/SuSE as these distro's use kickstart for automagic builds.
Cobbler makes heavy usage of templates (called snippets) to auto-generate kickstarts on demand. this may seem confusing at first but think of it this way. I write a "snippet" of code to setup the root password on my node and every system that inherits this snippet shares this once piece of code. so if i need to update my default root pass i just need to update one snippet and all kickstarts will pick up this change. beats having to edit a bunch of different kickstarts when making small changes. features like this should make it easier to support this system over time.
it's quite feature rich, but since it is being developed by RedHat its obviously not super portable atm. the lead developer is very keen to have other platforms supported by it. I worked on trying to get Ubuntu support working for a while but cried when i realized that a) ubuntu is crap and b) debian pre-seeds are needlessly complicated and are not as flexible as kickstarts. we eventually got ubuntu support working via some patches - but hopefully we'll "man up" and move away from ubuntu shortly.
whew - having said that you can easily support freebsd (i was netbooting OSX clients which took a little elbow grease but worked - so the code is pretty flexible). the advantage of using something like cobbler is that you can treat it as your single source of MAC, IP, Hostname info. so when we get a new box first thing we do is enter it into our cobbler provisioning server and assign it a kickstart or OS.
> After we get our install media situation setup, we'll move on to the various OS options for install- (CentOS Kickstart, FreeBSD installer scripts, post-flight config scripts, etc...)
I have not done *too* much work with freebsd installer scripts - but it should be quite easy to integrate it into cobbler. let me know if you run into any issues - i'm obviously quite happy with this code and have put a bit of work into it myself.
More information about the talk