From d72df6bcce109e7c44a6f3fd32388e891f330213 Mon Sep 17 00:00:00 2001 From: Recolic <git@me.recolic.net> Date: Thu, 5 Oct 2023 14:55:58 -0700 Subject: [PATCH] add debug --- src/daemon-test.sh | 65 +++++++++++++++++++++++++++ src/qemu-create-vm-from-cloudimg.fish | 11 +++++ src/vm.list | 5 +++ 3 files changed, 81 insertions(+) create mode 100644 src/daemon-test.sh create mode 100644 src/qemu-create-vm-from-cloudimg.fish create mode 100644 src/vm.list diff --git a/src/daemon-test.sh b/src/daemon-test.sh new file mode 100644 index 0000000..ac65d40 --- /dev/null +++ b/src/daemon-test.sh @@ -0,0 +1,65 @@ +# aria2c 'https://cloud-images.ubuntu.com/focal/20231003/focal-server-cloudimg-amd64.img' -x2 +# https://medium.com/@art.vasilyev/use-ubuntu-cloud-image-with-kvm-1f28c19f82f8 + +cp template/*-data . +genisoimage -output initimg.iso -volid cidata -joliet -rock user-data meta-data +qemu-img create -f qcow2 -F qcow2 -o backing_file=base/focal-server-cloudimg-amd64.img instance-1.qcow2 +qemu-img resize instance-1.qcow2 60G +qemu-system-x86_64 -drive file=instance-1.qcow2,if=virtio -cdrom initimg.iso -m 8G -cpu host -smp 4 -vnc :5 --enable-kvm -bios /usr/share/edk2-ovmf/x64/OVMF.fd + +function generate_metadata () { + local name=$1 + echo "local-hostname: $name" +} +function generate_userdata () { + local username=$1 + local password=$2 + local name=$3 + # TODO: allow public key? + echo "#cloud-config +system_info: + default_user: + name: $username + home: /home/$username + +password: $password +chpasswd: { expire: False } +hostname: $name + +# configure sshd to allow users logging in using password +# rather than just keys +ssh_pwauth: True +" +} + +workdir=./data +mkdir -p "$workdir/base" "$workdir/vm" "$workdir/tmp" +function create_vm_from () { + local name=$1 + local cores=$2 + local ram=$3 + local disk=$4 + local cloudimg=$5 + local username=$6 + local password=$7 + local vnc=$8 + local ports="$9" + + if [[ -f "$workdir/vm/$name/disk.img" ]]; then + # simply start it + return + else + # create and start it + generate_metadata "$name" > "$workdir/vm/$name/meta-data" + generate_userdata "$username" "$password" "$name" > "$workdir/vm/$name/user-data" + ( cd "$workdir/vm/$name" ; genisoimage -output initimg.iso -volid cidata -joliet -rock user-data meta-data ) + qemu-img create -f qcow2 -F qcow2 -o backing_file=base/focal-server-cloudimg-amd64.img "$workdir/vm/$name/disk.img" + qemu-img resize "$workdir/vm/$name/disk.img" "$disk" + qemu-system-x86_64 -drive file="$workdir/vm/$name/disk.img",if=virtio -cdrom "$workdir/vm/$name/initimg.iso" -m "$ram" -cpu host -smp "$cores" -vnc "$vnc" --enable-kvm -bios /usr/share/edk2-ovmf/x64/OVMF.fd & + pid=$! + echo PID=$pid + # TODO + fi +} + + diff --git a/src/qemu-create-vm-from-cloudimg.fish b/src/qemu-create-vm-from-cloudimg.fish new file mode 100644 index 0000000..f6aebf1 --- /dev/null +++ b/src/qemu-create-vm-from-cloudimg.fish @@ -0,0 +1,11 @@ +# aria2c 'https://cloud-images.ubuntu.com/focal/20231003/focal-server-cloudimg-amd64.img' -x2 +# https://medium.com/@art.vasilyev/use-ubuntu-cloud-image-with-kvm-1f28c19f82f8 + +cp template/*-data . +genisoimage -output initimg.iso -volid cidata -joliet -rock user-data meta-data +qemu-img create -f qcow2 -F qcow2 -o backing_file=base/focal-server-cloudimg-amd64.img instance-1.qcow2 +qemu-img resize instance-1.qcow2 60G +qemu-system-x86_64 -drive file=instance-1.qcow2,if=virtio -cdrom initimg.iso -m 8G -cpu host -smp 4 -vnc :5 --enable-kvm -bios /usr/share/edk2-ovmf/x64/OVMF.fd + + + diff --git a/src/vm.list b/src/vm.list new file mode 100644 index 0000000..a570254 --- /dev/null +++ b/src/vm.list @@ -0,0 +1,5 @@ +# hostname,cores,mem,disk,base-img,username,password,ports + +instance1,4,8G,60G,focal-server-cloudimg-amd64.img,r,1,22 +gitlab-ci,2,2G,40G,focal-server-cloudimg-amd64.img,r,1,22 +httptest,1,1G,20G,focal-server-cloudimg-amd64.img,r,1,22 80 443 -- GitLab