forked from ungleich-public/cdist
73 lines
2.3 KiB
Plaintext
73 lines
2.3 KiB
Plaintext
|
################################################################################
|
||
|
# Default VM parameters
|
||
|
#
|
||
|
cores=4
|
||
|
memory=$((8*1024*1024*1024))
|
||
|
system_disk_size=$((50*1024*1024*1024))
|
||
|
|
||
|
[ -f "$__object/parameter/memory" ] && memory="$(cat "$__object/parameter/memory")"
|
||
|
[ -f "$__object/parameter/cores" ] && cores="$(cat "$__object/parameter/cores")"
|
||
|
[ -f "$__object/parameter/system-disk-size" ] && system_disk_size="$(cat "$__object/parameter/system-disk-size")"
|
||
|
|
||
|
# Convert memory to MiB (kvm/qemu requirement)
|
||
|
memory_mebibytes=$(($memory/(1024*1024)))
|
||
|
|
||
|
################################################################################
|
||
|
# Required VM parameters
|
||
|
#
|
||
|
nic_pz="$(cat "$__object/parameter/nic-pz")"
|
||
|
nic_fz="$(cat "$__object/parameter/nic-fz")"
|
||
|
vm=$__object_id
|
||
|
|
||
|
basedir=/opt/local.ch/sys/kvm/vm/$vm
|
||
|
system_disk=$basedir/system-disk
|
||
|
start_on_boot=$basedir/start-on-boot
|
||
|
vnc_socket=unix:$basedir/vnc
|
||
|
pidfile=$basedir/pid
|
||
|
monitor=$basedir/monitor
|
||
|
|
||
|
mkdir -p "$__object/files"
|
||
|
start_file_source=$__object/files/start
|
||
|
start_file_destination=$basedir/start
|
||
|
|
||
|
#Base VM directory
|
||
|
__directory $basedir --parents yes \
|
||
|
--owner root --group root
|
||
|
|
||
|
cat << eof > "$start_file_source"
|
||
|
#!/bin/sh
|
||
|
# Generated shell script - do not modify
|
||
|
#
|
||
|
|
||
|
/usr/libexec/qemu-kvm \\
|
||
|
-name $vm \\
|
||
|
-enable-kvm \\
|
||
|
-m $memory_mebibytes \\
|
||
|
-drive file=${system_disk},if=virtio \\
|
||
|
-vnc $vnc_socket \\
|
||
|
-cpu host \\
|
||
|
-boot order=nc \\
|
||
|
-pidfile "$pidfile" \\
|
||
|
-monitor "unix:$monitor,server,nowait" \\
|
||
|
-net nic,macaddr=$nic_pz,model=virtio,vlan=200 \\
|
||
|
-net tap,script=/opt/local.ch/sys/kvm/bin/ifup-pz,downscript=/opt/local.ch/sys/kvm/bin/ifdown,vlan=200 \\
|
||
|
-net nic,macaddr=$nic_fz,model=virtio,vlan=300 \\
|
||
|
-net tap,script=/opt/local.ch/sys/kvm/bin/ifup-fz,downscript=/opt/local.ch/sys/kvm/bin/ifdown,vlan=300 \\
|
||
|
-smp $cores
|
||
|
eof
|
||
|
|
||
|
require="__directory/$basedir" __file $start_file_destination \
|
||
|
--source $start_file_source --mode 0755 --owner root --group root
|
||
|
|
||
|
require="__directory/$basedir" __qemu_img "$system_disk" \
|
||
|
--size "$system_disk_size"
|
||
|
|
||
|
# Normally, create a flag to start a VM on boot (if not
|
||
|
# explicitly told we should not)
|
||
|
if [ ! -f "$__object/parameter/do-not-start-on-boot" ]; then
|
||
|
require="__directory/$basedir" __file "$start_on_boot" \
|
||
|
--mode 0600 --owner root --group root
|
||
|
else
|
||
|
__file "$start_on_boot" --state absent
|
||
|
fi
|