* Remove OpenVZ CT management.
This commit is contained in:
parent
88158e8814
commit
ebcf559716
|
@ -13,3 +13,4 @@
|
||||||
* Remove OpenVZ configuration for the Hypervisor.
|
* Remove OpenVZ configuration for the Hypervisor.
|
||||||
* Ensure to run a 'full-upgrade' once repository added.
|
* Ensure to run a 'full-upgrade' once repository added.
|
||||||
* Add Postfix to the recommended packages.
|
* Add Postfix to the recommended packages.
|
||||||
|
* Remove OpenVZ CT management.
|
||||||
|
|
31
README.md
31
README.md
|
@ -9,7 +9,6 @@
|
||||||
* [Beginning with Proxmox](#beginning-with-proxmox)
|
* [Beginning with Proxmox](#beginning-with-proxmox)
|
||||||
4. [Usage](#usage)
|
4. [Usage](#usage)
|
||||||
* [Hypervisor](#hypervisor)
|
* [Hypervisor](#hypervisor)
|
||||||
* [VM](#vm)
|
|
||||||
5. [Reference](#reference)
|
5. [Reference](#reference)
|
||||||
* [Classes](#classes)
|
* [Classes](#classes)
|
||||||
* [Defined types](#defined-types)
|
* [Defined types](#defined-types)
|
||||||
|
@ -135,21 +134,6 @@ node /hyper0[12]/ inherits "pve_node" {
|
||||||
```
|
```
|
||||||
Will create a Cluster Proxmox with name "Deepthought", the master will be "hyper01". You also can manage all ssh ressources (and host) manually on each nodes.
|
Will create a Cluster Proxmox with name "Deepthought", the master will be "hyper01". You also can manage all ssh ressources (and host) manually on each nodes.
|
||||||
|
|
||||||
### VM
|
|
||||||
|
|
||||||
Only OpenVZ is supported right now but the vm's class will check-it by it self:
|
|
||||||
```
|
|
||||||
include proxmox4::vm
|
|
||||||
```
|
|
||||||
|
|
||||||
#### proxmox4::vm::openvz
|
|
||||||
|
|
||||||
Automatically call by the `proxmox4::vm` class, it will manage network configuration, but only few configurations are possible:
|
|
||||||
* Only one Virtual Ethernet device (aka veth) and it will work with **DHCP**.
|
|
||||||
* If a veth is available, it will be the main network's interface (set the default gateway throught eth0).
|
|
||||||
* If a veth is available, only one Virtual Network device (aka venet) as chance to work (the first one), because all others routes will be flushed.
|
|
||||||
* If there are only venet: no changes.
|
|
||||||
|
|
||||||
## Reference
|
## Reference
|
||||||
|
|
||||||
### Classes
|
### Classes
|
||||||
|
@ -158,8 +142,6 @@ Automatically call by the `proxmox4::vm` class, it will manage network configura
|
||||||
|
|
||||||
* `proxmox4::hypervisor`: Install the Proxmox hypervisor on the system.
|
* `proxmox4::hypervisor`: Install the Proxmox hypervisor on the system.
|
||||||
|
|
||||||
* `proxmox4::vm`: Manage virtual machines and containers.
|
|
||||||
|
|
||||||
### Defined types
|
### Defined types
|
||||||
|
|
||||||
* `proxmox4::hypervisor::group`: Manage groups for Proxmox WebGUI and set permissions.
|
* `proxmox4::hypervisor::group`: Manage groups for Proxmox WebGUI and set permissions.
|
||||||
|
@ -188,9 +170,9 @@ proxmox4::hypervisor::user { 'marvin':
|
||||||
* `ve_pkg_ensure`: What to set the Virtual Environnment package to. Can be 'present', 'absent' or 'version'. Defaults to 'present'.
|
* `ve_pkg_ensure`: What to set the Virtual Environnment package to. Can be 'present', 'absent' or 'version'. Defaults to 'present'.
|
||||||
* `ve_pkg_name`: The list of VirtualEnvironnment packages. Can be an array [ 'proxmox-ve', 'ksm-control-daemon', 'open-iscsi', 'pve-firmware' ].
|
* `ve_pkg_name`: The list of VirtualEnvironnment packages. Can be an array [ 'proxmox-ve', 'ksm-control-daemon', 'open-iscsi', 'pve-firmware' ].
|
||||||
* `kernel_pkg_name`: The list of packages to install the new PVE kernel. Can be an array [ 'pve-kernel-4.2.6-1-pve', '...' ].
|
* `kernel_pkg_name`: The list of packages to install the new PVE kernel. Can be an array [ 'pve-kernel-4.2.6-1-pve', '...' ].
|
||||||
* `rec_pkg_name`: The list of recommended and usefull packages for Proxmox. Can be an array [ 'ntp', 'ssh', 'lvm2', 'bridge-utils' ].
|
* `rec_pkg_name`: The list of recommended and usefull packages for Proxmox. Can be an array [ 'bridge-utils', 'lvm2', 'ntp', 'postfix', 'ssh' ].
|
||||||
* `old_pkg_ensure`: What to set useless packages (non recommended, previous kernel, ...). Can be 'present' or 'absent'. Defaults to 'absent'.
|
* `old_pkg_ensure`: What to set useless packages (non recommended, previous kernel, ...). Can be 'present' or 'absent'. Defaults to 'absent'.
|
||||||
* `old_pkg_name`: The list of useless packages. Can be an array [ 'acpid', 'linux-image-amd64', 'linux-base', 'linux-image-3.2.0-4-amd64' ].
|
* `old_pkg_name`: The list of useless packages. Can be an array [ 'acpid', 'linux-image-amd64', 'linux-base', 'linux-image-3.16.0-4-amd64' ].
|
||||||
* `pve_enterprise_repo_ensure`: Choose to keep the PVE enterprise repository. Can be 'present' or 'absent'. Defaults to 'absent'.
|
* `pve_enterprise_repo_ensure`: Choose to keep the PVE enterprise repository. Can be 'present' or 'absent'. Defaults to 'absent'.
|
||||||
* `pveproxy_default_path`: Path of the configuration file read by the PveProxy service. Defaults to '/etc/default/pveproxy'.
|
* `pveproxy_default_path`: Path of the configuration file read by the PveProxy service. Defaults to '/etc/default/pveproxy'.
|
||||||
* `pveproxy_default_content`: Template file use to generate the previous configuration file. Default to 'proxmox/hypervisor/pveproxy_default.erb'.
|
* `pveproxy_default_content`: Template file use to generate the previous configuration file. Default to 'proxmox/hypervisor/pveproxy_default.erb'.
|
||||||
|
@ -207,15 +189,6 @@ proxmox4::hypervisor::user { 'marvin':
|
||||||
* `cluster_master_ip`: The ip address of the "master" node that will create the cluster. Must be an IP address. Defaults to 'undef'.
|
* `cluster_master_ip`: The ip address of the "master" node that will create the cluster. Must be an IP address. Defaults to 'undef'.
|
||||||
* `cluster_name`: The cluster's name. Defaults to 'undef'.
|
* `cluster_name`: The cluster's name. Defaults to 'undef'.
|
||||||
|
|
||||||
#### proxmox4::vm
|
|
||||||
* `vm_interfaces_path`: The main network configuration's file. Defaults to '/etc/network/interfaces'.
|
|
||||||
* `vm_interfaces_content`: Template file used to generate the previous configuration file. Defaults to 'proxmox/vm/openvz_interfaces.erb'.
|
|
||||||
* `vm_interfaces_tail_path`: A second network configuration file that will be concatenated in the main. Defaults to '/etc/network/interfaces.tail'.
|
|
||||||
* `vm_interfaces_tail_content`: Template file used to generate the previous configuration file. Defaults to 'proxmox/vm/openzv_interfaces.tail.erb'.
|
|
||||||
* `network_service_name`: Network's service name. Defaults to 'networking'.
|
|
||||||
* `network_service_manage`: If set to 'true', Puppet will manage the network's service. Can be 'true' or 'false'. Defaults to 'true'.
|
|
||||||
* `network_service_enabled`: If set to 'true', Puppet will ensure the network's service is running. Can be 'true' or 'false'. Defaults to 'true'.
|
|
||||||
|
|
||||||
Other notes
|
Other notes
|
||||||
-----------
|
-----------
|
||||||
By default `proxmox4::hypervisor` comes with several modules kernel load at boot time. Mainly iptables's modules to allow it in the CT.
|
By default `proxmox4::hypervisor` comes with several modules kernel load at boot time. Mainly iptables's modules to allow it in the CT.
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
# Fact: vznetmask
|
|
||||||
#
|
|
||||||
# Purpose:
|
|
||||||
# Get netmasks for Virtual Network aka venet in OpenVZ CT, for available
|
|
||||||
# network networks
|
|
||||||
#
|
|
||||||
# Resolution:
|
|
||||||
# Uses `facter/util/ip` to enumerate interfaces and return their information.
|
|
||||||
#
|
|
||||||
require 'facter/util/ip'
|
|
||||||
require 'ipaddr'
|
|
||||||
|
|
||||||
Facter::Util::IP.get_interfaces.each do |interface|
|
|
||||||
Facter.add("vznetmask_" + Facter::Util::IP.alphafy(interface)) do
|
|
||||||
setcode do
|
|
||||||
if interface =~ /^venet*/
|
|
||||||
|
|
||||||
netmask = Facter::Util::IP.get_interface_value(interface, "netmask")
|
|
||||||
if netmask == "255.255.255.255"
|
|
||||||
# It's not possible to modify the netmask from WebGUI, so it's mainly set to /32
|
|
||||||
# http://openvz.org/Venet#Adding_IP_address_to_a_container
|
|
||||||
netmask = "255.255.255.0"
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
netmask
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,35 +0,0 @@
|
||||||
# Fact: vznetwork
|
|
||||||
#
|
|
||||||
# Purpose:
|
|
||||||
# Get networks for Virtual Network aka venet in OpenVZ CT, for available
|
|
||||||
# network networks
|
|
||||||
#
|
|
||||||
# Resolution:
|
|
||||||
# Uses `facter/util/ip` to enumerate interfaces and return their information.
|
|
||||||
#
|
|
||||||
require 'facter/util/ip'
|
|
||||||
require 'ipaddr'
|
|
||||||
|
|
||||||
Facter::Util::IP.get_interfaces.each do |interface|
|
|
||||||
Facter.add("vznetwork_" + Facter::Util::IP.alphafy(interface)) do
|
|
||||||
setcode do
|
|
||||||
if interface =~ /^venet*/
|
|
||||||
|
|
||||||
ipaddress = Facter::Util::IP.get_interface_value(interface, "ipaddress")
|
|
||||||
netmask = Facter::Util::IP.get_interface_value(interface, "netmask")
|
|
||||||
if netmask == "255.255.255.255"
|
|
||||||
# It's not possible to modify the netmask from WebGUI, so it's mainly set to /32
|
|
||||||
# http://openvz.org/Venet#Adding_IP_address_to_a_container
|
|
||||||
netmask = "255.255.255.0"
|
|
||||||
end
|
|
||||||
|
|
||||||
if ipaddress && netmask
|
|
||||||
ip = IPAddr.new(ipaddress, Socket::AF_INET)
|
|
||||||
subnet = IPAddr.new(netmask, Socket::AF_INET)
|
|
||||||
ip.mask(subnet.to_s).to_s
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -41,16 +41,6 @@ class proxmox4::params {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## VM - OpenVZ
|
|
||||||
# Network
|
|
||||||
$vm_interfaces_path = '/etc/network/interfaces'
|
|
||||||
$vm_interfaces_content = 'proxmox/vm/openzv_interfaces.erb'
|
|
||||||
$vm_interfaces_tail_path = '/etc/network/interfaces.tail'
|
|
||||||
$vm_interfaces_tail_content = 'proxmox/vm/openzv_interfaces.tail.erb'
|
|
||||||
$network_service_name = 'networking'
|
|
||||||
$network_service_manage = true
|
|
||||||
$network_service_enabled = true
|
|
||||||
|
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
fail("Proxmox Virtual Environment only works with Debian system; And the OpenVZ configuration has been tested only with Debian family; So osfamily (${::osfamily}) or lsbdistid (${::lsbdistid}) is unsupported")
|
fail("Proxmox Virtual Environment only works with Debian system; And the OpenVZ configuration has been tested only with Debian family; So osfamily (${::osfamily}) or lsbdistid (${::lsbdistid}) is unsupported")
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
# == Class: proxmox4::vm
|
|
||||||
#
|
|
||||||
# Manage Virtual Machines/VM (only OpenVZ right now)
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# === Variables
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# === Examples
|
|
||||||
#
|
|
||||||
# include proxmox4::vm
|
|
||||||
#
|
|
||||||
# === Authors
|
|
||||||
#
|
|
||||||
# Gardouille <gardouille@gmail.com>
|
|
||||||
#
|
|
||||||
# Copyright
|
|
||||||
#
|
|
||||||
# WTFPL <http://wtfpl.org/>
|
|
||||||
#
|
|
||||||
class proxmox4::vm (
|
|
||||||
$vm_interfaces_path = $proxmox4::params::vm_interfaces_path,
|
|
||||||
$vm_interfaces_content = $proxmox4::params::vm_interfaces_content,
|
|
||||||
$vm_interfaces_tail_path = $proxmox4::params::vm_interfaces_tail_path,
|
|
||||||
$vm_interfaces_tail_content = $proxmox4::params::vm_interfaces_tail_content,
|
|
||||||
$network_service_name = $proxmox4::params::network_service_name,
|
|
||||||
$network_service_manage = $proxmox4::params::network_service_manage,
|
|
||||||
$network_service_enabled = $proxmox4::params::network_service_enabled,
|
|
||||||
) inherits proxmox4::params {
|
|
||||||
|
|
||||||
case $::virtual {
|
|
||||||
'openvz': {
|
|
||||||
include proxmox4::vm::openvz
|
|
||||||
}
|
|
||||||
'kvm': {
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
fail(" => ${::virtual} <= virtual machines type is not yet supported.")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} # Public class: proxmox4::vm
|
|
|
@ -1,41 +0,0 @@
|
||||||
# == Class: proxmox4::vm::openvz
|
|
||||||
#
|
|
||||||
# Manage OpenVZ virtual machines (CT aka Containers)
|
|
||||||
#
|
|
||||||
class proxmox4::vm::openvz {
|
|
||||||
|
|
||||||
File {
|
|
||||||
owner => root,
|
|
||||||
group => root,
|
|
||||||
mode => 0644,
|
|
||||||
}
|
|
||||||
|
|
||||||
# Test if a virtual interface is available
|
|
||||||
## has_interface_with needs double quoted string for the argument !
|
|
||||||
if has_interface_with("eth0") {
|
|
||||||
|
|
||||||
## has_interface_with needs double quoted string for the argument !
|
|
||||||
if has_interface_with("venet0_0") { # Virtual network available too?
|
|
||||||
|
|
||||||
# Need to configure eth0 in an interfaces.tail file because
|
|
||||||
# the main interfaces file is auto-generated by PVE (for venet config)
|
|
||||||
file { $proxmox4::vm::vm_interfaces_tail_path:
|
|
||||||
ensure => present,
|
|
||||||
content => template($proxmox4::vm::vm_interfaces_tail_content),
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else { # Only virtual interface is available
|
|
||||||
|
|
||||||
# If eth0 is the only interface, push it's configuration in the standard interfaces file
|
|
||||||
file { $proxmox4::vm::vm_interfaces_path:
|
|
||||||
ensure => present,
|
|
||||||
content => template($proxmox4::vm::vm_interfaces_content),
|
|
||||||
}
|
|
||||||
|
|
||||||
} # fi
|
|
||||||
} # fi; don't need any additionnal network configuration
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} # Private class: proxmox4::vm::openvz
|
|
|
@ -1,12 +0,0 @@
|
||||||
# file generated by puppet
|
|
||||||
# Don't edit, please see https://forge.puppetlabs.com/gardouille/proxmox
|
|
||||||
|
|
||||||
# Auto generated lo interface
|
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
|
|
||||||
# The main network interface
|
|
||||||
auto eth0
|
|
||||||
iface eth0 inet dhcp
|
|
||||||
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
# file generated by puppet
|
|
||||||
# Don't edit, please see https://forge.puppetlabs.com/gardouille/proxmox
|
|
||||||
|
|
||||||
# The main network interface
|
|
||||||
auto eth0
|
|
||||||
iface eth0 inet dhcp
|
|
||||||
# Need to delete routes creates for venet interfaces
|
|
||||||
up ip route flush table main
|
|
||||||
# Add the default gateway throught eth0
|
|
||||||
# <%= scope.lookupvar('::ipaddress_eth0') %>
|
|
||||||
up ip route add default dev eth0
|
|
||||||
up ip route add <%= scope.lookupvar('::network_eth0') %>/<%= scope.lookupvar('::netmask_eth0') %> dev eth0 protocol kernel src <%= scope.lookupvar('::ipaddress_eth0') %>
|
|
||||||
up ip route add <%= scope.lookupvar('::vznetwork_venet0_0') %>/<%= scope.lookupvar('::vznetmask_venet0_0') %> dev venet0
|
|
||||||
down ip route del default dev eth0
|
|
||||||
down ip route del <%= scope.lookupvar('::vznetwork_venet0_0') %>/<%= scope.lookupvar('::vznetmask_venet0_0') %> dev venet0
|
|
Loading…
Reference in New Issue