|
|
define xen_guest($memory="512", $size="2Gb", $swap="2Gb", $gateway="10.10.2.2",
$ip, $auto=false, $ensure="present") {
case $name { '': { fail ( "Cannot create xen guest with empty name" ) } }
case $ensure {
present: {
exec { "/usr/bin/xen-create-image --hostname=$name --memory=$memory --size
=$size --swap=$swap --gateway=$gateway --ip=$ip --tar /root/puppet.client.tar --
ide":
creates => "/etc/xen/$name.cfg",
alias => "xen_create_$name"
}
}
running: {
exec { "/usr/bin/xen-create-image --hostname=$name --memory=$memory --size
=$size --swap=$swap --gateway=$gateway --ip=$ip --tar /root/puppet.client.tar --
ide --boot":
creates => "/etc/xen/$name.cfg",
alias => "xen_create_$name"
}
exec { "/usr/sbin/xm create /etc/xen/$name.cfg":
returns => 1,
unless => "/usr/sbin/xm list | /bin/grep $name",
require => Exec["xen_create_$name"]
}
}
stopped: {
exec { "/usr/bin/xen-create-image --hostname=$name --memory=$memory --size
=$size --swap=$swap --gateway=$gateway --ip=$ip --tar /root/puppet.client.tar --
ide":
creates => "/etc/xen/$name.cfg",
alias => "xen_create_$name"
}
exec { "/usr/sbin/xm shutdown -w $name":
onlyif => "/usr/sbin/xm list | /bin/grep $name",
require => Exec["xen_create_$name"]
}
}
absent: {
exec { "/usr/sbin/xm shutdown -w $name":
onlyif => "/usr/sbin/xm list | /bin/grep $name",
alias => "xen_shutdown_$name"
}
exec { "/usr/bin/xen-delete-image $name":
unless => "/usr/sbin/xm list | /bin/grep $name",
require => Exec["xen_shutdown_$name"]
onlyif => "/usr/sbin/xm list | /bin/grep $name",
require => Exec["xen_create_$name"]
}
}
absent: {
exec { "/usr/sbin/xm shutdown -w $name":
onlyif => "/usr/sbin/xm list | /bin/grep $name",
alias => "xen_shutdown_$name"
}
exec { "/usr/bin/xen-delete-image $name":
unless => "/usr/sbin/xm list | /bin/grep $name",
require => Exec["xen_shutdown_$name"]
}
}
}
if $auto {
exec { "/bin/ln -s /etc/xen/$name.cfg /etc/xen/auto/":
creates => "/etc/xen/auto/$name.cfg",
onlyif => "test -f /etc/xen/$name.cfg";
}
}
}
# Use like this:
# xen_guest { "puppet-test.example.com":
# ip => "10.10.67.26",
# ensure => "absent"
# }
|