From 3fc4b80bfb8eb5af732b23aa34e41d71c5bf1187 Mon Sep 17 00:00:00 2001 From: Nicolas Vigier Date: Sun, 21 Nov 2010 20:54:45 +0000 Subject: add testvm module, used to run test VMs --- modules/testvm/files/_vm | 53 ++++++++++++++++++++++++++++++++++++++++ modules/testvm/files/vm-jonund | 5 ++++ modules/testvm/manifests/init.pp | 33 +++++++++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 modules/testvm/files/_vm create mode 100755 modules/testvm/files/vm-jonund create mode 100644 modules/testvm/manifests/init.pp (limited to 'modules/testvm') diff --git a/modules/testvm/files/_vm b/modules/testvm/files/_vm new file mode 100644 index 00000000..a3482596 --- /dev/null +++ b/modules/testvm/files/_vm @@ -0,0 +1,53 @@ +#!/bin/sh + +test -z $vmname && exit 1 + +vmdir="$HOME/VMs" +piddir="$HOME/PIDs" +logdir="$HOME/log" +vmfile="$vmdir/$vmname" +pidfile="$piddir/$vmname" +logfile="$logdir/$vmname" +qemucmd="qemu-kvm -nographic -pidfile $pidfile -hda $vmfile -net nic,vlan=0 -net user,vlan=0,hostfwd=tcp::$sshport-:22 $QEMUOPT" + +function running() +{ + test -f $pidfile || return 1 + pid=`cat $pidfile` + test -d "/proc/$pid" +} + +function stop() +{ + test -f $pidfile || return 1 + pid=`cat $pidfile` + kill "$pid" && rm -f "$pidfile" +} + +function start() +{ + running && echo "VM is already running" && return 1 + nohup $qemucmd > $logfile 2>&1 & +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + start + stop + ;; + status) + running + vmrunning=$? + test $vmrunning -eq 0 && echo "VM $vmname is running" + test $vmrunning -eq 0 || echo "VM $vmname is stopped" + ;; + ssh) + running && ssh -p $sshport localhost + ;; +esac diff --git a/modules/testvm/files/vm-jonund b/modules/testvm/files/vm-jonund new file mode 100755 index 00000000..eeb429e9 --- /dev/null +++ b/modules/testvm/files/vm-jonund @@ -0,0 +1,5 @@ +#!/bin/sh +vmname=jonund +sshport=5051 +SCRIPTSDIR=$(dirname $0) +. "$SCRIPTSDIR/_vm" diff --git a/modules/testvm/manifests/init.pp b/modules/testvm/manifests/init.pp new file mode 100644 index 00000000..93376e45 --- /dev/null +++ b/modules/testvm/manifests/init.pp @@ -0,0 +1,33 @@ +class testvm +{ + $testvm_login = "testvm" + $testvmdir = "/home/testvm" + + group {"$testvm_login": + ensure => present, + } + + user {"$testvm_login": + ensure => present, + comment => "System user used to run test VMs", + managehome => true, + gid => $vmtest_login, + shell => "/bin/bash", + } + + file { "$testvmdir/bin/_vm": + ensure => present, + owner => root, + group => root, + mode => 644, + source => "puppet:///modules/testvm/_vm", + } + + file { "$testvmdir/bin/vm-jonund": + ensure => present, + owner => root, + group => $testvm_login, + mode => 750, + source => "puppet:///modules/testvm/vm-jonund", + } +} -- cgit v1.2.1