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.
70 lines
2.8 KiB
70 lines
2.8 KiB
#!/bin/sh
|
|
|
|
set -Eeuo pipefail
|
|
|
|
# Source variables and environment
|
|
source ./env.sh
|
|
|
|
# Constants
|
|
LOCAL_ARCH="$(arch)"
|
|
ARCH="${1:-$LOCAL_ARCH}"
|
|
TYPE="${2:-qcow2}"
|
|
DOMAIN_NAME="test-$NAME-$TYPE-$ARCH"
|
|
|
|
# Cleanup
|
|
if virsh list --name | grep -Eq "^$DOMAIN_NAME\$"; then
|
|
virsh destroy "$DOMAIN_NAME"
|
|
fi
|
|
if virsh list --all --name | grep -Eq "^$DOMAIN_NAME\$"; then
|
|
virsh undefine "$DOMAIN_NAME" --nvram
|
|
fi
|
|
rm -rf "/var/lib/libvirt/images/$DOMAIN_NAME"
|
|
mkdir -p "/var/lib/libvirt/images/$DOMAIN_NAME"
|
|
|
|
# Computing virt-install options
|
|
declare -a VIRT_INSTALL_OPTS=()
|
|
if [[ "$ARCH" != "$LOCAL_ARCH" ]]; then
|
|
VIRT_INSTALL_OPTS+=("--virt-type" "qemu" "--arch" "$ARCH")
|
|
else
|
|
VIRT_INSTALL_OPTS+=("--cpu" "host-passthrough")
|
|
fi
|
|
case "$TYPE" in
|
|
"qcow2")
|
|
cp "disk-$NAME-$ARCH.qcow2" "/var/lib/libvirt/images/$DOMAIN_NAME/disk.qcow2"
|
|
VIRT_INSTALL_OPTS+=("--disk" "path=/var/lib/libvirt/images/$DOMAIN_NAME/disk.qcow2,format=qcow2,bus=virtio,size=100"
|
|
"--import"
|
|
"--network" "network=default")
|
|
;;
|
|
"kickstart")
|
|
cp "install-$NAME-$ARCH.iso" "/var/lib/libvirt/images/$DOMAIN_NAME/install.iso"
|
|
VIRT_INSTALL_OPTS+=("--disk" "path=/var/lib/libvirt/images/$DOMAIN_NAME/disk.qcow2,format=qcow2,bus=virtio,size=100"
|
|
"--location" "/var/lib/libvirt/images/$DOMAIN_NAME/install.iso,kernel=images/pxeboot/vmlinuz,initrd=images/pxeboot/initrd.img"
|
|
"--extra-args" "console=ttyS0 inst.ks=cdrom:/osbuild.ks"
|
|
"--network" "network=default")
|
|
;;
|
|
"kickstart-online")
|
|
cp "install-$NAME-$ARCH-online.iso" "/var/lib/libvirt/images/$DOMAIN_NAME/install.iso"
|
|
VIRT_INSTALL_OPTS+=("--disk" "path=/var/lib/libvirt/images/$DOMAIN_NAME/disk.qcow2,format=qcow2,bus=virtio,size=100"
|
|
"--location" "/var/lib/libvirt/images/$DOMAIN_NAME/install.iso,kernel=images/pxeboot/vmlinuz,initrd=images/pxeboot/initrd.img"
|
|
"--extra-args" "console=ttyS0 inst.ks=cdrom:/osbuild.ks"
|
|
"--network" "network=default")
|
|
;;
|
|
"kickstart-offline")
|
|
cp "install-$NAME-$ARCH-offline.iso" "/var/lib/libvirt/images/$DOMAIN_NAME/install.iso"
|
|
VIRT_INSTALL_OPTS+=("--disk" "path=/var/lib/libvirt/images/$DOMAIN_NAME/disk.qcow2,format=qcow2,bus=virtio,size=100"
|
|
"--location" "/var/lib/libvirt/images/$DOMAIN_NAME/install.iso,kernel=images/pxeboot/vmlinuz,initrd=images/pxeboot/initrd.img"
|
|
"--extra-args" "console=ttyS0 inst.ks=cdrom:/osbuild.ks"
|
|
"--network" "none")
|
|
;;
|
|
*)
|
|
echo "Wrong artefact type $TYPE: expected either 'qcow2' or 'kickstart'."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Boot VM
|
|
set -x
|
|
virt-install --name "$DOMAIN_NAME" --memory 4096 --vcpus 2 \
|
|
--console pty,target_type=virtio --serial pty --graphics none \
|
|
--os-variant rhel9-unknown --boot uefi \
|
|
"${VIRT_INSTALL_OPTS[@]}"
|
|
|