Created
May 22, 2020 21:15
-
-
Save intlabs/8c07a2d48dcc0d3adbc298bcc28cf15c to your computer and use it in GitHub Desktop.
vm-prep.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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