Wer mit OpenShift und KubeVirt arbeitet, kennt das Problem: Mehrere identische Virtual Machines (VMs) manuell zu erstellen kostet Zeit – besonders in Test- oder Lab-Umgebungen.
Mit einem kleinen Bash-Script lässt sich das elegant automatisieren.
#!/bin/bash
for VMID in {1..10}; do
echo „Erstelle Ressourcen für VMID=${VMID}“
# Rootdisk DataVolume
oc create -f – <<EOF
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: rhel9-small-custom${VMID}-rootdisk
spec:
storage:
resources:
requests:
storage: 30Gi
storageClassName: ibm-flash-storage
source:
blank: {}
EOF
# Datadisks DataVolumes
for i in {1..2}; do
oc create -f – <<EOF
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: rhel9-small-custom${VMID}-datadisk${i}
spec:
storage:
resources:
requests:
storage: 5Gi
storageClassName: ibm-flash-storage
source:
blank: {}
EOF
done
# VirtualMachine
oc create -f – <<EOF
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: rhel9-small-custom${VMID}
spec:
running: false
template:
spec:
domain:
cpu:
cores: 2
resources:
requests:
memory: 4Gi
devices:
disks:
– name: rootdisk
disk:
bus: virtio
$(for i in {1..2}; do
echo “ – name: disk${i}“
echo “ disk:“
echo “ bus: virtio“
done)
volumes:
– name: rootdisk
dataVolume:
name: rhel9-small-custom${VMID}-rootdisk
$(for i in {1..2}; do
echo “ – name: disk${i}“
echo “ dataVolume:“
echo “ name: rhel9-small-custom${VMID}-datadisk${i}“
done)
EOF
done
Das Script erstellt automatisch eine definierte Anzahl von Virtual Machines (VMs):
- VMIDs von 1 bis 10 (anpassbar)
- Pro VM:
- 1 × Rootdisk (30 Gigabyte)
- 2 × Datadisks (je 5 Gi)
- 2 vCPUs
- 4 Gi RAM
- StorageClass: ibm-flash-storage
- VMs werden initial nicht gestartet (running: false)
