85 lines
2.7 KiB
Puppet
85 lines
2.7 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 ...": }
|
|
->
|
|
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 ...": }
|
|
->
|
|
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
|
|
## The variable needs double quote to take the array
|
|
if ! defined(Package["${proxmox::hypervisor::rec_pkg_name}"]) {
|
|
package { $proxmox::hypervisor::rec_pkg_name:
|
|
ensure => $proxmox::hypervisor::ve_pkg_ensure,
|
|
}
|
|
} else {
|
|
notice("Warn: can't manage ${proxmox::hypervisor::rec_pkg_name}.")
|
|
}
|
|
|
|
}
|
|
|
|
# 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
|