proxmox/manifests/hypervisor/install.pp

86 lines
2.9 KiB
Puppet

# == Class: proxmox::hypervisor::install
#
# Install Proxmox and reboot the system on the PVE kernel
#
class proxmox::hypervisor::install {
Exec {
path => [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ],
logoutput => 'on_failure',
}
# If the system run on a standard Debian Kernel
if $::kernelrelease == '3.2.0-4-amd64' {
# To avoid unwanted reboot (kernel update for example), the PVE kernel is
# installed only if the system run on a standard Debian.
# You will need to update your PVE kernel manually.
# Installation of the PVE Kernel
if $proxmox::hypervisor::kvm_only == true {
notify { "Need to install a PVE kernel (${proxmox::hypervisor::kernel_kvm_pkg_name}) and reboot the system to run it ...": }
->
# Don't use "${...}" because the kernel_kvm_pkg_name variable is an array
package { $proxmox::hypervisor::kernel_kvm_pkg_name:
ensure => "${proxmox::hypervisor::ve_pkg_ensure}",
notify => Exec['update_grub','reboot_to_pve'],
}
}
else {
notify { "Need to install a PVE kernel (${proxmox::hypervisor::kernel_pkg_name}) and reboot the system to run it ...": }
->
# Don't use "${...}" because the kernel_pkg_name variable is an array
package { $proxmox::hypervisor::kernel_pkg_name:
ensure => "${proxmox::hypervisor::ve_pkg_ensure}",
notify => Exec['update_grub','grub_reboot'],
}
# The kernel that allow KVM + OpenVZ is older than the standard Debian's
# kernel, so grub reboot must be used
}
}
else { # If the system already run a PVE kernel
# Installation of Virtual Environnment
package { $proxmox::hypervisor::ve_pkg_name:
ensure => "${proxmox::hypervisor::ve_pkg_ensure}",
} ->
# Remove useless packages (such as the standard kernel, acpid, ...)
package { $proxmox::hypervisor::old_pkg_name:
ensure => "${proxmox::hypervisor::old_pkg_ensure}",
notify => Exec['update_grub'],
}
# Ensure that some recommended packages are present on the system
# come from Proxmox and standard Debian repository
if ! defined(Package["${proxmox::hypervisor::rec_pkg_name}"]) {
package { $proxmox::hypervisor::rec_pkg_name:
ensure => "${proxmox::hypervisor::ve_pkg_ensure}",
}
} else {
notice("Warning: cannot manage the installation of ${proxmox::hypervisor::rec_pkg_name}, as another resource (perhaps ...?) is managing it.")
}
}
# Ensure the grub is update
exec { 'update_grub':
command => "update-grub",
refreshonly => true,
}
# Choose a different line in the grub
exec { 'grub_reboot':
command => "grub-reboot 2",
refreshonly => true,
notify => Exec['reboot_to_pve'],
}
# Reboot on a PVE Kernel
exec { 'reboot_to_pve':
command => "shutdown -r 1",
refreshonly => true,
}
} # Private class: proxmox::hypervisor::install