Skip to content

Instantly share code, notes, and snippets.

@gmcinnes
Created March 14, 2012 14:52
Show Gist options
  • Select an option

  • Save gmcinnes/2037008 to your computer and use it in GitHub Desktop.

Select an option

Save gmcinnes/2037008 to your computer and use it in GitHub Desktop.
require 'digest/md5'
CURRENT_DIR = File.dirname(__FILE__)
PRESEED_MD5 = "#{Digest::MD5.file("#{CURRENT_DIR}/preseed.cfg").hexdigest}"
Veewee::Session.declare( {
:boot_cmd_sequence => [
"<Esc><Esc><Enter>",
"/install/vmlinuz ",
"noapic ",
"auto-install/enable",
"console-setup/ask_detect=false ",
"console-setup/modelcode=pc105 ",
"console-setup/layoutcode=us ",
"debconf/priority=critical ",
"debconf/frontend=noninteractive ",
"debian-installer=en_US ",
"debian-installer/locale=en_US ",
"debian-installer/framebuffer=false ",
"initrd=/install/initrd.gz ",
"kbd-chooser/method=us ",
"netcfg/get_hostname=%NAME% ",
"netcfg/dhcp_timeout=60 ",
"netcfg/choose_interface=auto ",
"preseed/interactive=false ",
"preseed/url=http://%IP%:%PORT%/preseed.cfg ",
"preseed/url/checksum=#{PRESEED_MD5} ",
"DEBCONF_DEBUG=5 ",
"-- <Enter>"
],
:boot_wait => "5",
:cpu_count => '2',
:disk_size => '30520',
:disk_format => 'VMDK',
:hostiocache => 'on',
:iso_download_timeout => "60",
:iso_file => "ubuntu-10.04.3-server-amd64.iso",
:iso_src => "http://releases.ubuntu.com/10.04.3/ubuntu-10.04.3-server-amd64.iso",
:iso_md5 => "84b43b7bbee85d0af8e11b778c8d1290",
:kickstart_file => "preseed.cfg",
:kickstart_port => "7122",
:kickstart_timeout => "60",
:memory_size => '360',
:os_type_id => 'Ubuntu_64',
:postinstall_files => [ "postinstall.sh" ],
:postinstall_timeout => "10000",
:ssh_login_timeout => "60",
:ssh_user => "vagrant",
:ssh_password => "vagrant",
:ssh_key => "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1NwwD3zaFdg2yWsXS8ZoheowffOmxt8eNyrlKabesFrw9B9ZSH2FDYr/EhtQEZofoAq2QstrBuvyCJdYl0cT7cfClFv71Db7/LAKWK09gXuk/Kc022e4y2iI7TPSpaNfTS3tcYE8pJzRmisPAUi25lOeZ56qP84KPzhh5RonBdYVFquDf6X0gXItzH+ERxwfqICDwCbP6GDfKoYIBoL5dvOt33o1L1DkvlfujVEHrNr/8T9byQw0ntpPqTOkTAhud+atQRfriwbRfwzOqwrC8EEACldJskoOGriDSEDL8kVEcsdNQnapwB2ZoVElNIetmCZMpFE/K6/h3dvdBbBKnw==",
:ssh_host_port => "7222",
:ssh_guest_port => "22",
:sudo_cmd => "echo '%p'|sudo -S sh '%f'",
:shutdown_cmd => "shutdown -h now",
})
# postinstall.sh created from Mitchell's official lucid32/64 baseboxes
date > /etc/vagrant_box_build_time
# Apt-install various things necessary for Ruby, guest additions,
# etc., and remove optional things to trim down the machine.
apt-get -y update
apt-get -y upgrade
apt-get -y install linux-headers-$(uname -r) build-essential
apt-get -y install zlib1g-dev libssl-dev libreadline5-dev
apt-get clean
# Setup sudo to allow no-password sudo for "admin"
cp /etc/sudoers /etc/sudoers.orig
sed -i -e '/Defaults\s\+env_reset/a Defaults\texempt_group=admin' /etc/sudoers
sed -i -e 's/%admin ALL=(ALL) ALL/%admin ALL=NOPASSWD:ALL/g' /etc/sudoers
# Install NFS client
apt-get -y install nfs-common
# Install Ruby from source in /opt so that users of Vagrant
# can install their own Rubies using packages or however.
# We must install the 1.8.x series since Puppet doesn't support
# Ruby 1.9 yet.
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz
tar xvzf ruby-1.9.2-p290.tar.gz
cd ruby-1.9.2-p290
./configure
make
make install
cd ..
rm -rf ruby-1.9.2-p290
# Installing chef & Puppet
gem install chef --no-ri --no-rdoc
# Add /opt/ruby/bin to the global path as the last resort so
# Ruby, RubyGems, and Chef/Puppet are visible
#echo 'PATH=$PATH:/opt/ruby/bin/'> /etc/profile.d/vagrantruby.sh
# Installing vagrant keys
mkdir /home/vagrant/.ssh
chmod 700 /home/vagrant/.ssh
cd /home/vagrant/.ssh
wget --no-check-certificate 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' -O authorized_keys
chmod 600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh
# Installing the virtualbox guest additions
VBOX_VERSION=$(cat /home/vagrant/.vbox_version)
cd /tmp
wget http://download.virtualbox.org/virtualbox/$VBOX_VERSION/VBoxGuestAdditions_$VBOX_VERSION.iso
mount -o loop VBoxGuestAdditions_$VBOX_VERSION.iso /mnt
sh /mnt/VBoxLinuxAdditions.run
umount /mnt
rm VBoxGuestAdditions_$VBOX_VERSION.iso
# Remove items used for building, since they aren't needed anymore
apt-get -y remove linux-headers-$(uname -r) build-essential
apt-get -y autoremove
# Zero out the free space to save space in the final image:
dd if=/dev/zero of=/EMPTY bs=1M
rm -f /EMPTY
# Removing leftover leases and persistent rules
echo "cleaning up dhcp leases"
rm /var/lib/dhcp3/*
# Make sure Udev doesn't block our network
# http://6.ptmc.org/?p=164
echo "cleaning up udev rules"
rm /etc/udev/rules.d/70-persistent-net.rules
mkdir /etc/udev/rules.d/70-persistent-net.rules
rm -rf /dev/.udev/
rm /lib/udev/rules.d/75-persistent-net-generator.rules
echo "Adding a 2 sec delay to the interface up, to make the dhclient happy"
echo "pre-up sleep 2" >> /etc/network/interfaces
exit
## Options to set on the command line
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layout string Belgium
#d-i netcfg/get_hostname string dummy
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
# Continue without a default route
# Not working , specify a dummy in the DHCP
#d-i netcfg/no_default_route boolean
d-i time/zone string Europe/Brussels
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i kbd-chooser/method select Belgian
d-i netcfg/wireless_wep string
d-i base-installer/kernel/override-image string linux-server
#d-i base-installer/kernel/override-image string linux-image-2.6.32-21-generic
# Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive
d-i debconf debconf/frontend select Noninteractive
d-i pkgsel/install-language-support boolean false
tasksel tasksel/first multiselect standard, ubuntu-server
#d-i partman-auto/method string regular
d-i partman-auto/method string lvm
#d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-auto/choose_recipe select atomic
d-i partman/confirm_write_new_label boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
#http://ubuntu-virginia.ubuntuforums.org/showthread.php?p=9626883
#Message: "write the changes to disk and configure lvm preseed"
#http://serverfault.com/questions/189328/ubuntu-kickstart-installation-using-lvm-waits-for-input
#preseed partman-lvm/confirm_nooverwrite boolean true
# Write the changes to disks and configure LVM?
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/guided_size string max
## Default user, we can get away with a recipe to change this
d-i passwd/user-fullname string vagrant
d-i passwd/username string vagrant
d-i passwd/user-password password vagrant
d-i passwd/user-password-again password vagrant
d-i user-setup/encrypt-home boolean false
d-i user-setup/allow-password-weak boolean true
## minimum is puppet and ssh and ntp
# Individual additional packages to install
d-i pkgsel/include string openssh-server ntp acpid
# Whether to upgrade packages after debootstrap.
# Allowed values: none, safe-upgrade, full-upgrade
d-i pkgsel/upgrade select full-upgrade
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i finish-install/reboot_in_progress note
#For the update
d-i pkgsel/update-policy select none
# debconf-get-selections --install
#Use mirror
#d-i apt-setup/use_mirror boolean true
#d-i mirror/country string manual
#choose-mirror-bin mirror/protocol string http
#choose-mirror-bin mirror/http/hostname string 192.168.4.150
#choose-mirror-bin mirror/http/directory string /ubuntu
#choose-mirror-bin mirror/suite select maverick
#d-i debian-installer/allow_unauthenticated string true
choose-mirror-bin mirror/http/proxy string
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment