Demo about Edge Computing in the Retail vertical using Red Hat products
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

56 lines
1.8 KiB

#!/bin/bash
set -Eeuo pipefail
if [[ $# -ne 1 ]]; then
echo "Usage: $0 <vm-name>"
exit 1
fi
VM="${1}"
if [ -d "/var/lib/libvirt/images/${VM}/" ]; then
echo "VM ${VM} already exists. Please remove it first."
exit 1
fi
temp_dir=$(mktemp -d)
cleanup() {
local exit_code=$?
rm -rf "$temp_dir"
if [ $exit_code -ne 0 ]; then
echo "An error occurred. Cleaning up..."
virsh destroy "${VM}" || true
virsh undefine "${VM}" --nvram || true
rm -rf "/var/lib/libvirt/images/${VM}/"
fi
}
trap cleanup EXIT
# Create a temporary directory to hold the VM image and copy the base image there
install -m 0710 -o root -g qemu --context=system_u:object_r:virt_image_t:s0 -d "$temp_dir"
install -m 0710 -o root -g qemu -Z -d "/var/lib/libvirt/images/${VM}"
# Migrate the VM disk from Hyper-V to KVM
echo "Copying the VM disk from Hyper-V..."
rclone copy "$DOMAIN_HYPERV_DISK_LOCATION" "$temp_dir"
echo "Converting the VM disk to qcow2 format..."
qemu-img convert -O qcow2 "$temp_dir/$DOMAIN_HYPERV_DISK_NAME" "/var/lib/libvirt/images/${VM}/root.qcow2"
restorecon -F "/var/lib/libvirt/images/${VM}/root.qcow2"
# Create and start the VM using virt-install
echo "Creating and starting the VM ${VM}..."
virt-install --name "${VM}" \
--autostart \
--cpu=host-passthrough \
--vcpus=${DOMAIN_VCPUS} \
--ram=${DOMAIN_RAM} \
--os-variant=${DOMAIN_OS_VARIANT} \
--disk=path=/var/lib/libvirt/images/${VM}/root.qcow2,bus=sata,format=qcow2 \
--disk=path=/usr/share/virtio-win/virtio-win.iso,device=cdrom,bus=sata \
--boot uefi \
--import \
--network=network=default,mac=${DOMAIN_MAC_ADDRESS} \
--noautoconsole
echo "VM ${VM} has been created and started."
exit 0