From 52d7fe52e51d49e7fb4fc329dd08ae98402dfc70 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sat, 11 Jun 2022 11:17:42 +0200 Subject: [PATCH] Fix VM base images being overwritten The base image is used as backing image for the VM images, so overwriting it results in corrupt data after VM reboots. --- site-cookbooks/kosmos_kvm/attributes/default.rb | 7 +++++++ site-cookbooks/kosmos_kvm/recipes/host.rb | 12 +++++++----- .../{files/create_vm => templates/create_vm.erb} | 5 ++--- 3 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 site-cookbooks/kosmos_kvm/attributes/default.rb rename site-cookbooks/kosmos_kvm/{files/create_vm => templates/create_vm.erb} (95%) diff --git a/site-cookbooks/kosmos_kvm/attributes/default.rb b/site-cookbooks/kosmos_kvm/attributes/default.rb new file mode 100644 index 0000000..709728b --- /dev/null +++ b/site-cookbooks/kosmos_kvm/attributes/default.rb @@ -0,0 +1,7 @@ +ubuntu_server_cloud_image_release = "20220530" + +node.default["kosmos_kvm"]["host"]["qemu_base_image"] = { + "url" => "https://cloud-images.ubuntu.com/releases/focal/release-#{ubuntu_server_cloud_image_release}/ubuntu-20.04-server-cloudimg-amd64-disk-kvm.img", + "checksum" => "0295bee0539924774327d5267aa8e2eeac315b9efea7136c83643fce454529b8", + "path" => "/var/lib/libvirt/images/base/ubuntu-20.04-server-cloudimg-amd64-disk-kvm-#{ubuntu_server_cloud_image_release}.qcow2" +} diff --git a/site-cookbooks/kosmos_kvm/recipes/host.rb b/site-cookbooks/kosmos_kvm/recipes/host.rb index ef1f1a5..5e7776f 100644 --- a/site-cookbooks/kosmos_kvm/recipes/host.rb +++ b/site-cookbooks/kosmos_kvm/recipes/host.rb @@ -12,17 +12,19 @@ directory "/var/lib/libvirt/images/base" do mode "0750" end -# Base Ubuntu 20.04 image -remote_file "/var/lib/libvirt/images/base/ubuntu-20.04-server-cloudimg-amd64-disk-kvm.qcow2" do - source "http://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64-disk-kvm.img" +# Base VM image +remote_file node["kosmos_kvm"]["host"]["qemu_base_image"]["path"] do + source node["kosmos_kvm"]["host"]["qemu_base_image"]["url"] + checksum node["kosmos_kvm"]["host"]["qemu_base_image"]["checksum"] owner "libvirt-qemu" group "kvm" mode "0640" end -cookbook_file "/usr/local/sbin/create_vm" do - source "create_vm" +template "/usr/local/sbin/create_vm" do + source "create_vm.erb" mode "0750" + variables base_image_path: node["kosmos_kvm"]["host"]["qemu_base_image"]["path"] end firewall_rule 'ssh-alt-port' do diff --git a/site-cookbooks/kosmos_kvm/files/create_vm b/site-cookbooks/kosmos_kvm/templates/create_vm.erb similarity index 95% rename from site-cookbooks/kosmos_kvm/files/create_vm rename to site-cookbooks/kosmos_kvm/templates/create_vm.erb index 0c82f2d..fc8fbcb 100644 --- a/site-cookbooks/kosmos_kvm/files/create_vm +++ b/site-cookbooks/kosmos_kvm/templates/create_vm.erb @@ -16,10 +16,9 @@ DISKSIZE=${4:-10} # 10GB default # Directory where image files will be stored IMAGE_DIR=/var/lib/libvirt/images -IMAGE_FILE=${VMNAME}.qcow2 -IMAGE_PATH=$IMAGE_DIR/$IMAGE_FILE +IMAGE_PATH=$IMAGE_DIR/${VMNAME}.qcow2 CIDATA_PATH=${IMAGE_DIR}/cidata-${VMNAME}.iso -BASE_FILE=${IMAGE_DIR}/base/ubuntu-20.04-server-cloudimg-amd64-disk-kvm.qcow2 +BASE_FILE=<%= @base_image_path %> # Create the VM image if it does not already exist if [ ! -f "$IMAGE_PATH" ]; then