From 5946af1bdad6cdf336135ff1dde863ae33684b95 Mon Sep 17 00:00:00 2001 From: Gardouille Date: Mon, 2 Mar 2015 19:06:14 +0100 Subject: [PATCH] * (#11) Add a new fact to get a valid netmask for OpenVZ's virtual interfaces (venet). * (#11) Use the new fact vznetmask_venet0_0 to add the route in interfaces.tail file. --- CHANGELOG.md | 4 ++++ lib/facter/vznetmask.rb | 29 +++++++++++++++++++++++++ templates/vm/openzv_interfaces.tail.erb | 4 ++-- 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 lib/facter/vznetmask.rb diff --git a/CHANGELOG.md b/CHANGELOG.md index e237e6b..d7d3506 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ * Update README.md. * Upgrade pve-kernel-3.10.0-7-pve and pve-kernel-2.6.32-37 to the last version. +##### Bugfixes +* (#11) Add a new fact to get a valid netmask for OpenVZ's virtual interfaces (venet). +* (#11) Use the new fact vznetmask_venet0_0 to add the route in interfaces.tail file. + --------------------------------------- ### 0.2.1 - 2015/02/03 diff --git a/lib/facter/vznetmask.rb b/lib/facter/vznetmask.rb new file mode 100644 index 0000000..cdc6bfb --- /dev/null +++ b/lib/facter/vznetmask.rb @@ -0,0 +1,29 @@ +# 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 diff --git a/templates/vm/openzv_interfaces.tail.erb b/templates/vm/openzv_interfaces.tail.erb index c36695f..9e8335e 100644 --- a/templates/vm/openzv_interfaces.tail.erb +++ b/templates/vm/openzv_interfaces.tail.erb @@ -10,6 +10,6 @@ iface eth0 inet dhcp # <%= 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('::netmask_venet0_0') %> dev venet0 + 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('::netmask_venet0_0') %> dev venet0 + down ip route del <%= scope.lookupvar('::vznetwork_venet0_0') %>/<%= scope.lookupvar('::vznetmask_venet0_0') %> dev venet0