Skip to content

Instantly share code, notes, and snippets.

@intlabs
Created May 22, 2020 21:15
Show Gist options
  • Select an option

  • Save intlabs/8c07a2d48dcc0d3adbc298bcc28cf15c to your computer and use it in GitHub Desktop.

Select an option

Save intlabs/8c07a2d48dcc0d3adbc298bcc28cf15c to your computer and use it in GitHub Desktop.
vm-prep.sh
#!/bin/sh
image_pool="/var/lib/libvirt/images"
sudo curl -o "${image_pool}/ubuntu-20.04.qcow2" -L https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64-disk-kvm.img
sudo curl -o "${image_pool}/ubuntu-18.04.qcow2" -L https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
sudo modprobe nbd
function find_nbd() {
for dev in /sys/class/block/nbd*; do
local size
size="$(cat "$dev"/size)"
if (( size == 0 ));
then
printf "%s" "/dev/nbd${dev: -1}"
return
fi
done
}
function prep_docker_img() {
set -x
ubuntu_release="$1"
sudo rm -f "${image_pool}/ubuntu-${ubuntu_release}-docker.qcow2"
sudo qemu-img create -f qcow2 -F qcow2 -o \
"backing_file=${image_pool}/ubuntu-${ubuntu_release}.qcow2" \
"${image_pool}/ubuntu-${ubuntu_release}-docker.qcow2"
current_nbd=$(find_nbd)
sudo qemu-nbd -c "${current_nbd}" "${image_pool}/ubuntu-${ubuntu_release}-docker.qcow2"
img_mount=$(mktemp -d)
sudo mount "${current_nbd}p1" "${img_mount}"
sudo mount --bind /run/ "${img_mount}/run/"
sudo chroot "${img_mount}" apt-get update
sudo chroot "${img_mount}" apt-get install --no-install-recommends -y docker.io git git-review
sudo chroot "${img_mount}" apt-get purge --no-install-recommends -y snapd
sudo chroot "${img_mount}" apt-get autoremove -y
sudo chroot "${img_mount}" apt-get dist-upgrade -y
sudo chroot "${img_mount}" apt-get clean
sudo umount "${img_mount}/run/"
sudo chroot "${img_mount}" systemctl enable docker
sudo chroot "${img_mount}" systemctl mask openssh.socket
sudo sed -i 's/name: ubuntu/name: harbor/g' "${img_mount}/etc/cloud/cloud.cfg"
sudo sed -i 's/groups: \[/groups: \[docker, /g' "${img_mount}/etc/cloud/cloud.cfg"
sudo umount "${img_mount}"
sudo qemu-nbd -d "${current_nbd}"
set +x
}
for release in 20.04 18.04; do
prep_docker_img ${release}
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment