andybotting.com

18 Sep, 2009

Automating Debian installs with Preseeding

Posted by: Andy Botting In: Geek| Linux| Work

Following on from my post about building Debian virtual machines with libvirt, I’ve now got automated installations of Debian Lenny using the preseeding method. Coupling this with using virt-install, I can have a Debian virtual machine installation in only a few minutes. No questions asked.

The virt-install command contains an extra-args argument, where you can fill-in the specific parts of the preseeding. I don’t want to set an IP address in the file as it’s going to be used to build lots of machines, so I just specify that at install time. The URL part is where out preseed config file is stored. This obviously means that the machine needs to able to contact with webserver at install time to download the config.

$ NAME=debian-test
virt-install --name=${NAME} \
--ram=512 --file=/var/lib/xen/images/${NAME}.img \
--file-size 8 \
--nographics \
--paravirt \
--network=bridge:br0 \
--location=http://mirrors.uwa.edu.au/debian/dists/lenny/main/installer-i386 \
--extra-args="auto=true interface=eth0 hostname=${NAME} domain=vpac.org netcfg/get_ipaddress=192.168.1.2 netcfg/get_netmask=255.255.255.0 netcfg/get_gateway=192.168.1.1 netcfg/get_nameservers=192.168.1.1 netcfg/disable_dhcp=true url=http://webserver/preseed.cfg"

To get an idea of the contents of the preseed config file, the best place to start is the Debian stable example preseed file. It lists lots of different options, with plenty of comments so you can understand what’s going on.

For me to get a fully-automated install, I used these options. It’s fairly standard, but definitely worth reading the comments about each line.

$ egrep -v "(^#|^$)" preseed.cfg
d-i debian-installer/locale string en_AU
d-i console-keymaps-at/keymap select us
d-i netcfg/choose_interface select eth0
d-i netcfg/disable_dhcp boolean true
d-i netcfg/dhcp_options select Configure network manually
d-i netcfg/confirm_static boolean true
d-i mirror/protocol string http
d-i mirror/country string manual
d-i mirror/http/hostname string mirrors.uwa.edu.au
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i clock-setup/utc boolean true
d-i time/zone string Australia/Melbourne
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string ntp.vpac.org
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto/choose_recipe select atomic
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i passwd/make-user boolean false
d-i passwd/root-password-crypted password [MD5 Sum of the password]
tasksel tasksel/first multiselect standard
d-i pkgsel/include string openssh-server vim puppet
popularity-contest popularity-contest/participate boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean false
d-i finish-install/reboot_in_progress note

Some good resources I found, which might help you are:

2 Responses to "Automating Debian installs with Preseeding"

1 | Queensland

October 28th, 2009 at 7:45 am

Avatar

Seems a little bit complicated….

2 | Ben Last

January 7th, 2010 at 5:26 pm

Avatar

At NearMap we use preseeding to build our (many many) servers… to avoid hardwiring IPs we allocate them using DHCP (via MAC addresses). Means one preseed can cover all the systems. You should be able to get DHCP to serve virtual systems if your dhcpd listens on the bridge address.

Comment Form

Twitter

  • Last day at VPAC today. In other news, my train is late because it was waiting for an ambulance at North Shore for a passenger. 4 hrs ago

  • Should re-read my tweets before posting. 2 days ago

  • I'm taking the train from Geelong to Melbourne, so I did the City Loop crush again this morning because. No wonder everyone looks depressed. 2 days ago

  • Just had the fire alarm go off in our building. We did pretty well to get out of bed, throw clothes on and get outside in record time 1 week ago

  • Rebuilt my AppleTV yesterday with Ubuntu Karmic, XBMC and CrystalHD support. Plays 1080p silky smooth. 1 week ago

  • More updates...

Posting tweet...

Categories