From ee396068314f3ca59bad326ddc35aaec6ac33c6f Mon Sep 17 00:00:00 2001 From: victor Date: Wed, 26 Mar 2025 22:36:56 +0100 Subject: [PATCH] Initial supporg for Fedora flavours --- .gitignore | 2 + env_scripts/newer_os.sh | 2 - vm_create.sh | 97 +++++++++++++++++++++++++++-------------- 3 files changed, 67 insertions(+), 34 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..859059f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.img +*.qcow2 diff --git a/env_scripts/newer_os.sh b/env_scripts/newer_os.sh index e3c05bf..e69de29 100644 --- a/env_scripts/newer_os.sh +++ b/env_scripts/newer_os.sh @@ -1,2 +0,0 @@ -#!/bin/env bash -GUEST_OS_TYPE_DEBIAN="debian12" \ No newline at end of file diff --git a/vm_create.sh b/vm_create.sh index ff6d07d..2b06b8e 100755 --- a/vm_create.sh +++ b/vm_create.sh @@ -9,8 +9,9 @@ VM_BASE_IMAGE= VM_OS_VARIANT= VM_USERNAME="user" VM_BRIDGE_INT= -VM_NET_USED="default" +VM_NET_USED="PU-internalTests" LIBVIRT_NET_OPTION="network=$VM_NET_USED,model=e1000" +HAT_STREAM="stable" # Functions usage() { @@ -31,46 +32,48 @@ EOF } HOST_OS=$(cat /etc/os-release | grep -v VERSION_ID |grep "ID=" | awk -F'=' '{print $2}') -if [ $HOST_OS == "debian" ]; then - source < env_scripts/older_os.sh +if [ "$HOST_OS" == "debian" ]; then + source env_scripts/older_os.sh else - source > env_scripts/newer_os.sh + source env_scripts/newer_os.sh fi -case $answer in - [1]* ) VM_OS_VARIANT=${GUEST_OS_TYPE_DEBIAN} - VM_BASE_IMAGE='https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2' - break;; - [2]* ) VM_OS_VARIANT='ubuntu20.04' - VM_BASE_IMAGE='https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img' - break;; - [3]* ) VM_OS_VARIANT='ubuntu22.04' - VM_BASE_IMAGE='https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img' - break;; - [4]* ) VM_OS_VARIANT='ubuntu24.04' - VM_BASE_IMAGE='https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img' - break;; - [5]* ) VM_OS_VARIANT='freebsd14.0' - VM_BASE_IMAGE='https://download.freebsd.org/releases/VM-IMAGES/14.0-RELEASE/amd64/Latest/FreeBSD-14.0-RELEASE-amd64.qcow2.xz' - break;; - * ) echo "Please answer 1,2,3,4,5.";; - esac - done download_base_image() { if ! test -f "${VM_BASE_DIR}/base/$VM_OS_VARIANT.qcow2"; then - if [[ "$VM_OS_VARIANT" == "freebsd14.0" ]]; then - VM_DISK_FORMAT=".qcow2.xz" - wget -v -O "${VM_BASE_DIR}/base/$VM_OS_VARIANT.${VM_DISK_FORMAT}" ${VM_BASE_IMAGE} + if [[ "$VM_OS_VARIANT" == "freebsd14.2" ]]; then + VM_DISK_FORMAT="qcow2.xz" cd ${VM_BASE_DIR}/base/ + wget -v -O "${VM_BASE_DIR}/base/$VM_OS_VARIANT.${VM_DISK_FORMAT}" ${VM_BASE_IMAGE} xz -d $VM_OS_VARIANT.${VM_DISK_FORMAT} + mv $VM_OS_VARIANT.${VM_DISK_FORMAT} $VM_OS_VARIANT.img cd - + elif [[ "$VM_OS_VARIANT" == "fedora-coreos-stable" ]]; then + podman run --pull=always --rm \ + -v /dev:/dev -v /run/udev:/run/udev \ + -v $VM_BASE_DIR/base:/data -w /data \ + quay.io/coreos/coreos-installer:release \ + download -s ${HAT_STREAM} -p qemu -f qcow2.xz --decompress -C . + mv $VM_BASE_DIR/base/fedora-coreos-*.qcow2 $VM_BASE_DIR/base/"$VM_OS_VARIANT".qcow2 else wget -v -O "${VM_BASE_DIR}/base/$VM_OS_VARIANT.${VM_DISK_FORMAT}" ${VM_BASE_IMAGE} fi fi } +gen_coreos_data() +{ +cat < "$VM_BASE_DIR/init/${VM_HOSTNAME}-user-data.bu" +variant: fcos +version: 1.6.0 +passwd: + users: + - name: core + ssh_authorized_keys: + - ${SSH_PUB_KEY} +EOF +} + gen_linux_user_data() { VM_USER_PASS=$(tr -dc A-Za-z0-9 ${IGNITION_CONFIG} + chown ${USERNAME}:libvirt-qemu /home/victor/vms/init/* + #Install + virt-install \ + --connect="qemu:///system" \ + --name ${VM_HOSTNAME} \ + --memory ${VM_MEM_SIZE} \ + --vcpus="${VM_VCPUS}" \ + --os-variant=${VM_OS_VARIANT} \ + --disk ${VM_BASE_DIR}/images/${VM_HOSTNAME}.img,device=disk,bus=virtio \ + --autostart \ + --import --noautoconsole \ + --network ${LIBVIRT_NET_OPTION} "${IGNITION_DEVICE_ARG[@]}" + #https://unix.stackexchange.com/questions/578086/virt-install-error-cant-load-ignit +else virt-install \ --name ${VM_HOSTNAME} \ --memory ${VM_MEM_SIZE} \ @@ -247,6 +279,7 @@ fi # cloud-localds \ # ${VM_BASE_DIR}/images/${VM_HOSTNAME}.iso \ # ${VM_BASE_DIR}/init/${VM_HOSTNAME}-user-data +fi virsh dumpxml "${VM_HOSTNAME}" > "${VM_BASE_DIR}/xml/${VM_HOSTNAME}.xml" if [ -n $VERBOSE ]; then