forked from ungleich-public/cdist
add new type: __localch_kvm_vm
Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
This commit is contained in:
parent
785c9ad4aa
commit
3dfad32d4c
4 changed files with 88 additions and 0 deletions
10
cdist/conf/type/__localch_kvm_vm/README
Normal file
10
cdist/conf/type/__localch_kvm_vm/README
Normal file
|
@ -0,0 +1,10 @@
|
|||
To be executed on the Xen Host.
|
||||
Using "xe" tool from Citrix Xen.
|
||||
|
||||
Todo:
|
||||
|
||||
- Setup DNS -> bind
|
||||
- via puppet
|
||||
- move away from puppet to cdist (intrusive)
|
||||
- Boot VM
|
||||
- Kickstart
|
72
cdist/conf/type/__localch_kvm_vm/manifest
Normal file
72
cdist/conf/type/__localch_kvm_vm/manifest
Normal file
|
@ -0,0 +1,72 @@
|
|||
################################################################################
|
||||
# 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
|
4
cdist/conf/type/__localch_kvm_vm/parameter/optional
Normal file
4
cdist/conf/type/__localch_kvm_vm/parameter/optional
Normal file
|
@ -0,0 +1,4 @@
|
|||
cores
|
||||
memory
|
||||
system-disk-size
|
||||
do-not-start-on-boot
|
2
cdist/conf/type/__localch_kvm_vm/parameter/required
Normal file
2
cdist/conf/type/__localch_kvm_vm/parameter/required
Normal file
|
@ -0,0 +1,2 @@
|
|||
nic-pz
|
||||
nic-fz
|
Loading…
Reference in a new issue