# == 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