|
|
|
@ -3,16 +3,17 @@
|
|
|
|
|
#
|
|
|
|
|
# Generate a generic Vagrant Box.
|
|
|
|
|
#
|
|
|
|
|
# Vagrant images are essentially nothing more than OVA's with extra-metadata and
|
|
|
|
|
# some preinstalled packages.
|
|
|
|
|
# Vagrant images are essentially nothing more than OVA's with extra-metadata
|
|
|
|
|
# and some preinstalled packages.
|
|
|
|
|
#
|
|
|
|
|
# We can't use the OVA's for Vagrant since Vagrant uses SSH to modify the instance.
|
|
|
|
|
# This build step creates a cloud-config ISO so that Cloud-Init will configure
|
|
|
|
|
# the initial user, creates meta-data that tells Vagrant how to interact with
|
|
|
|
|
# the cloud-init created users, and finally create the OVA.
|
|
|
|
|
# We can't use the OVA's for Vagrant since Vagrant uses SSH to modify the
|
|
|
|
|
# instance. This build step creates a cloud-config ISO so that Cloud-Init
|
|
|
|
|
# will configure the initial user, creates meta-data that tells Vagrant how
|
|
|
|
|
# to interact with the cloud-init created users, and finally create the OVA.
|
|
|
|
|
#
|
|
|
|
|
# For this step, we make a deriviative of binary/boot/disk.ext4 and install some
|
|
|
|
|
# packages in it, convert it to a vmdk, and then assemble the vagrant box.
|
|
|
|
|
# For this step, we make a deriviative of binary/boot/disk.ext4 and install
|
|
|
|
|
# some packages in it, convert it to a vmdk, and then assemble the vagrant
|
|
|
|
|
# box.
|
|
|
|
|
|
|
|
|
|
cur_d=${PWD}
|
|
|
|
|
my_d=$(dirname $(readlink -f ${0}))
|
|
|
|
@ -33,18 +34,23 @@ apt-get -qqy install genisoimage qemu-utils
|
|
|
|
|
box_d=$(mktemp -d)
|
|
|
|
|
seed_d=$(mktemp -d)
|
|
|
|
|
mount_d=$(mktemp -d)
|
|
|
|
|
trap "rm -rf ${box_d} ${seed_d} ${mount_d}" EXIT
|
|
|
|
|
|
|
|
|
|
create_derivative "disk" "vagrant" #sets ${derivative_img}
|
|
|
|
|
mount_disk_image ${derivative_img} ${mount_d}
|
|
|
|
|
|
|
|
|
|
cleanup_vagrant() {
|
|
|
|
|
umount_disk_image ${mount_d}
|
|
|
|
|
rm -rf ${box_d} ${seed_d} ${mount_d} ${derivative_img}
|
|
|
|
|
}
|
|
|
|
|
trap cleanup_vagrant EXIT
|
|
|
|
|
|
|
|
|
|
pkgs=(virtualbox-guest-dkms
|
|
|
|
|
virtualbox-guest-utils
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
create_derivative "disk" "vagrant" #sets ${derivative_img}
|
|
|
|
|
mount_disk_image ${derivative_img} ${mount_d}
|
|
|
|
|
env DEBIAN_FRONTEND=noninteractive chroot ${mount_d} apt-get update
|
|
|
|
|
env DEBIAN_FRONTEND=noninteractive chroot ${mount_d} apt-get install --no-install-recommends -y ${pkgs[@]}
|
|
|
|
|
env DEBIAN_FRONTEND=noninteractive chroot ${mount_d} apt-get clean
|
|
|
|
|
umount_disk_image ${mount_d}
|
|
|
|
|
chroot ${mount_d} apt-get update
|
|
|
|
|
chroot ${mount_d} apt-get install --no-install-recommends -y ${pkgs[@]}
|
|
|
|
|
chroot ${mount_d} apt-get clean
|
|
|
|
|
|
|
|
|
|
# Used to identify bits
|
|
|
|
|
suite=$(chroot chroot lsb_release -c -s)
|
|
|
|
@ -55,7 +61,6 @@ distro=$(chroot chroot lsb_release --id --short | tr [:upper:] [:lower:])
|
|
|
|
|
prefix="${distro}-${suite}-${version}-cloudimg"
|
|
|
|
|
vmdk_f="${box_d}/${prefix}.vmdk"
|
|
|
|
|
create_vmdk ${derivative_img} ${vmdk_f}
|
|
|
|
|
rm -f ${derivative_img}
|
|
|
|
|
|
|
|
|
|
# Vagrant needs a base user. We either inject the well-known SSH key
|
|
|
|
|
# or use password authentication. Both are ugly. So we'll use a password
|
|
|
|
|