tAdd support for cloud-based VM images. - libdevuansdk - common library for devuan's simple distro kits (HTM) git clone https://git.parazyd.org/libdevuansdk (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules (DIR) README (DIR) LICENSE --- (DIR) commit 589d62ca0eb8d72149d3c8a54c310a5255ad47dd (DIR) parent c922031a0cb2eade8922cf3c2d40dff2b13cd54c (HTM) Author: parazyd <parazyd@dyne.org> Date: Mon, 8 Oct 2018 12:36:15 +0200 Add support for cloud-based VM images. Diffstat: M zlibs/helpers | 1 + M zlibs/vm | 39 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 0 deletions(-) --- (DIR) diff --git a/zlibs/helpers b/zlibs/helpers t@@ -81,6 +81,7 @@ build_vagrant_dist() { vm_umount_${imageformat} || { zerr; wrapup } vm_vbox_setup || { zerr; wrapup } vm_vagrant_package || { zerr; wrapup } + vm_init_cloud || { zerr; wrapup } vm_pack_dist || { zerr; wrapup } } (DIR) diff --git a/zlibs/vm b/zlibs/vm t@@ -169,6 +169,39 @@ EOF popd } +vm_init_cloud() { + fn vm_init_cloud + req=(workdir strapdir imageformat loopdevice) + ckreq || return 1 + + [ -n "$makecloud" ] || return + [ "$imageformat" = qcow2 ] || { + die "imageformat is not qcow2" + zerr + } + + notice "Creating a cloud-based image" + pushd "$workdir" + cp -v "base.qcow2" "base-cloud.qcow2" + + notice "Connecting qemu-nbd and mounting" + sudo mkdir -p "$strapdir" + sudo qemu-nbd --connect=${loopdevice} base-cloud.qcow2 || zerr + sudo mount ${loopdevice}p1 $strapdir || zerr + + notice "Installing cloud-init" + cat <<EOF | sudo tee ${strapdir}/initcloud >/dev/null +#!/bin/sh + +apt-get update +apt-get --yes --force-yes install cloud-init +apt-get clean +EOF + chroot-script -d initcloud || zerr + vm_umount_${imageformat} || zerr + popd +} + vm_pack_dist() { fn vm_pack_dist req=(workdir imageformat) t@@ -180,6 +213,9 @@ vm_pack_dist() { mv $workdir/base.${imageformat} $R/dist/${vm_name}.${imageformat} cp $workdir/base.vdi $R/dist/${vm_name}.vdi + [ -n "$makecloud" ] && \ + mv base-cloud.${imageformat} $R/dist/${vm_name}-cloud.${imageformat} + act "calculating sha256 sums..." silly sha256sum $R/dist/${vm_name}.box > \ t@@ -188,6 +224,9 @@ vm_pack_dist() { $R/dist/${vm_name}.${imageformat}.sha sha256sum $R/dist/${vm_name}.vdi > \ $R/dist/${vm_name}.vdi.sha + [ -n "$makecloud" ] && \ + sha256sum $R/dist/${vm_name}-cloud.${imageformat} > \ + $R/dist/${vm_name}-cloud.${imageformat}.sha notice "cleaning up virtualbox leftovers" pushd "$workdir"