]> gitweb.fluxo.info Git - puppet-virtual.git/commitdiff
Introducing hostname and interface parameters
authorSilvio Rhatto <rhatto@riseup.net>
Fri, 25 Dec 2009 02:55:33 +0000 (00:55 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Fri, 25 Dec 2009 02:55:33 +0000 (00:55 -0200)
files/vserver/build_vserver
manifests/vserver.pp

index 3645ea9d22257867c564f08156c8e5f88db7a23b..569451bf41bb7e7de3d53b30db5665104676f1cc 100644 (file)
@@ -4,16 +4,23 @@ NAME=$1
 CONTEXT=$2
 RELEASE=$3
 DEBOOTSTRAP_MIRROR=$4
-# create basic vserver
-vserver $NAME build -m debootstrap -- -d $RELEASE -m $DEBOOTSTRAP_MIRROR
+HOSTNAME=$5
+INTERFACE=$6
+
+if [ $HOSTNAME != "none" ]; then
+  hostname="--hostname $HOSTNAME"
+fi
 
-# default settings
-echo $NAME >/etc/vservers/$NAME/uts/nodename
-echo $CONTEXT >/etc/vservers/$NAME/context
+if [ ! -z $INTERFACE]; then
+  interface="--interface $INTERFACE"
+fi
+
+# create basic vserver
+vserver $NAME build -n $NAME --context $CONTEXT \
+        $hostname $interace -m debootstrap -- -d $RELEASE -m $DEBOOTSTRAP_MIRROR
 
 # copy in some some defaults
 TARGET=/etc/vservers/$NAME/vdir/
-
 cp /etc/apt/{preferences,sources.list} $TARGET/etc/apt/
 
 # this is needed so puppet can find the puppetmaster and creates the right
index f29b9d69e0cbc3db5d8a4d1c2fab7a884d9abd8c..4709ac8e64483b25a7a8f7271a96b55c80896f88 100644 (file)
@@ -101,10 +101,10 @@ class vserver::host {
   }
 }
 
-# TODO: hostname
 define vs_create($in_domain, $context, $legacy = false, $distro = 'etch',
-                 $debootstrap_mirror = 'http://ftp.debian.org/debian', $hostname = false) { 
-  $vs_name = $legacy ? { true => $name, false => $in_domain ? { '' => $name, default => "${name}.${in_domain}" } }
+                 $debootstrap_mirror = 'http://ftp.debian.org/debian', $hostname = false, $interface = false) { 
+  $vs_name     = $legacy   ? { true  => $name, false => $in_domain ? { '' => $name, default => "${name}.${in_domain}" } }
+  $vs_hostname = $hostname ? { false => 'none', default => $hostname }
 
   case $vs_name { '': { fail ( "Cannot create VServer with empty name" ) } }
 
@@ -116,7 +116,7 @@ define vs_create($in_domain, $context, $legacy = false, $distro = 'etch',
       }
     }
     false: {
-      exec { "/usr/local/bin/build_vserver \"${vs_name}\" ${context} ${distro} ${debootstrap_mirror}":
+      exec { "/usr/local/bin/build_vserver \"${vs_name}\" ${context} ${distro} ${debootstrap_mirror} ${vs_hostname} ${interface}":
         creates => "/etc/vservers/${vs_name}",
         require => File["/usr/local/bin/build_vserver"],
         alias => "vs_create_${vs_name}"
@@ -126,7 +126,8 @@ define vs_create($in_domain, $context, $legacy = false, $distro = 'etch',
 }
 
 # ensure: present, stopped, running
-define vserver($ensure, $context, $in_domain = '', $mark = '', $legacy = false, $distro = 'etch') {
+define vserver($ensure, $context, $in_domain = '', $mark = '', $legacy = false, $distro = 'etch',
+               $hostname = false, $interface = false) {
   case $in_domain { '': {} 
     default: { err("${fqdn}: vserver ${name} uses deprecated \$in_domain" ) }
   }
@@ -135,21 +136,59 @@ define vserver($ensure, $context, $in_domain = '', $mark = '', $legacy = false,
 
   case $vs_name { '': { fail ( "Cannot create VServer with empty name" ) } }
 
-  $if_dir = "/etc/vservers/${vs_name}/interfaces"
+  $if_dir    = "/etc/vservers/${vs_name}/interfaces"
   $mark_file = "/etc/vservers/${vs_name}/apps/init/mark"
 
   # TODO: wasn't there a syntax for using arrays as case selectors??
   case $ensure {
-    present: { vs_create{$name: in_domain => $in_domain, context => $context, legacy => $legacy, distro => $distro, } }
-    running: { vs_create{$name: in_domain => $in_domain, context => $context, legacy => $legacy, distro => $distro, } }
-    stopped: { vs_create{$name: in_domain => $in_domain, context => $context, legacy => $legacy, distro => $distro, } }
-        delete:  { vs_create{$name: in_domain => $in_domain, context => $context, legacy => $legacy, distro => $distro, } }
-    default: { err("${fqdn}: vserver(${vs_name}): unknown ensure '${ensure}'") }
+    present: {
+               vs_create{ $name:
+                 in_domain => $in_domain,
+                 context   => $context,
+                 legacy    => $legacy,
+                 distro    => $distro,
+                 hostname  => $hostname,
+                 interface => $interface,
+               }
+             }
+    running: {
+               vs_create{ $name:
+                 in_domain => $in_domain,
+                 context   => $context,
+                 legacy    => $legacy,
+                 distro    => $distro,
+                 hostname  => $hostname,
+                 interface => $interface,
+               }
+             }
+    stopped: {
+               vs_create{ $name:
+                 in_domain => $in_domain,
+                 context   => $context,
+                 legacy    => $legacy,
+                 distro    => $distro,
+                 hostname  => $hostname,
+                 interface => $interface,
+               }
+             }
+    delete: {
+               vs_create{ $name:
+                 in_domain => $in_domain,
+                 context   => $context,
+                 legacy    => $legacy,
+                 distro    => $distro,
+                 hostname  => $hostname,
+                 interface => $interface,
+               }
+             }
+    default: {
+               err("${fqdn}: vserver(${vs_name}): unknown ensure '${ensure}'")
+             }
   }
 
   file {
     $if_dir:
-      ensure => directory, checksum => mtime,
+      ensure  => directory, checksum => mtime,
       require => Exec["vs_create_${vs_name}"];
   }