Whilst work­ing at IS, I’ve sent VMware servers to Accra, Nairobi, Lagos, Maputo, Lon­don, Dur­ban, Cape Town and then of course to two sites in Johan­nes­burg. The servers in Accra, Nairobi, Lagos and Maputo run var­i­ous vir­tual machines required by the NMS team (of which I am a mem­ber), as well as a whole lot that a sis­ter team of ours uses. The NMS machines are things like Sys­log boxes and SNMP gate­ways, etc.

Con­nec­tiv­ity to those regions is any­where from awe­some — if that region is on the east­ern side of Africa and con­nects via Sea­com — right down to pretty much unus­able. The kind of unus­able where you spend a whole day just try­ing to log into the con­sole of a vir­tual machine because every time you try to write “root” the word will come out as “rroot” and then “rooooot” and then “rootttt”. It’s one of the most frus­trat­ing things I’ve ever had to do in my life, I’m sure of it.

Which kinda brings me to the point of this post. I decided that the best way to deploy the var­i­ous machines (given that there’s never any time to send the VMware server itself to the region with all the vir­tual machines already built) was to kick­start them, using pre­seeds for the Ubuntu boxes and kick­starts for the CentOS/RHEL boxes. This has worked famously for me, and I’m now able to have fully built, NMS stan­dards com­pli­ant vir­tual machines in any of those regions in ten min­utes or less.

That was until I upgraded the key infra­struc­ture boxes (dhcp & tftp servers etc.) to Lucid. Sud­denly every­thing ground to a halt. The fix how­ever was very sim­ple. In fact I feel kinda guilty that you’ve had to read this whole long story just to get such a sim­ple solu­tion to your problem.

Before Lucid these boxes ran Hardy. I used tftpd-hpa run­ning as a dae­mon, using the stan­dard /var/lib/tftpboot direc­tory as the TFTP root. My /etc/default/tftpd-hpa file looked like this:

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

After upgrad­ing to Lucid that file had changed so that it looked like this:

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS=""

How­ever the ser­vice wouldn’t start and the net­work installs kept on fail­ing to even start. Chang­ing the con­tents of /etc/default/tftpd-hpa to look more like this solved my prob­lem. The “4” is because I switch IPv6 off on all my Lucid machines by adding “ipv6.disable=1″ to the “GRUB_CMDLINE_LINUX_DEFAULT” line in /etc/default/grub.

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-4 --secure"

Bounce the ser­vice and you’re sorted, and back on the road with your net­work installs. :)