50 lines
1.1 KiB
Puppet
50 lines
1.1 KiB
Puppet
notice('MODULAR: generate_vms.pp')
|
|
|
|
$libvirt_dir = '/etc/libvirt/qemu'
|
|
$template_dir = '/var/lib/nova'
|
|
$packages = ['qemu-utils', 'qemu-kvm', 'libvirt-bin', 'xmlstarlet']
|
|
$libvirt_service_name = 'libvirtd'
|
|
|
|
$vms = hiera_array('vms_conf')
|
|
|
|
define vm_config {
|
|
$details = $name
|
|
$id = $details['id']
|
|
|
|
file { "${template_dir}/template_${id}_vm.xml":
|
|
owner => 'root',
|
|
group => 'root',
|
|
content => template('osnailyfacter/vm_libvirt.erb'),
|
|
}
|
|
}
|
|
|
|
package { $packages:
|
|
ensure => 'installed',
|
|
}
|
|
|
|
service { $libvirt_service_name:
|
|
ensure => 'running',
|
|
require => Package[$packages],
|
|
before => Exec['generate_vms'],
|
|
}
|
|
|
|
file { "${libvirt_dir}/autostart":
|
|
ensure => 'directory',
|
|
require => Package[$packages],
|
|
}
|
|
|
|
file { "${template_dir}":
|
|
ensure => 'directory',
|
|
}
|
|
|
|
vm_config { $vms:
|
|
before => Exec['generate_vms'],
|
|
require => File["${template_dir}"],
|
|
}
|
|
|
|
exec { 'generate_vms':
|
|
command => "/usr/bin/generate_vms.sh ${libvirt_dir} ${template_dir}",
|
|
path => ['/usr/sbin', '/usr/bin' , '/sbin', '/bin'],
|
|
require => [File["${template_dir}"], File["${libvirt_dir}/autostart"]],
|
|
}
|