Configure interface bonding by puppet
Example: l23network::l3::ifconfig {'eth0': ipaddr=>'none', bond_master=>'bond0', } -> l23network::l3::ifconfig {'eth2': ipaddr=>'none', bond_master=>'bond0', } -> l23network::l3::ifconfig {'bond0': ipaddr=>'192.168.232.1', bond_mode=>0, }
This commit is contained in:
parent
98ca56a738
commit
9882e440b2
@ -112,6 +112,7 @@ Puppet::Type.type(:l3_if_downup).provide(:ruby) do
|
||||
notice("Can't flush interface '#{@resource[:interface]}'.")
|
||||
end
|
||||
end
|
||||
return true if @resource[:onlydown]
|
||||
begin # Put interface to UP state
|
||||
ifup(@resource[:interface])
|
||||
notice("Interface '#{@resource[:interface]}' up.")
|
||||
|
@ -24,6 +24,11 @@ Puppet::Type.newtype(:l3_if_downup) do
|
||||
defaultto(true)
|
||||
end
|
||||
|
||||
newparam(:onlydown) do
|
||||
newvalues(true, false)
|
||||
defaultto(false)
|
||||
end
|
||||
|
||||
newparam(:kill_dhclient) do
|
||||
# workaround for https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/38140
|
||||
newvalues(true, false)
|
||||
|
@ -18,6 +18,19 @@
|
||||
# If you configure 802.1q vlan interface wint name vlanXXX
|
||||
# you must specify parent interface in this option
|
||||
#
|
||||
# [*bond_master*]
|
||||
# This option say, that this interface is a slave of bondX interface.
|
||||
#
|
||||
# [*bond_mode*]
|
||||
# For interfaces bondNN this option specified bond mode.
|
||||
# All bond_* options ignored for non-master-bond interfaces.
|
||||
#
|
||||
# [*bond_miimon*]
|
||||
# lacp MII monitor period.
|
||||
#
|
||||
# [*bond_lacp_rate*]
|
||||
# lacp MII rate
|
||||
#
|
||||
# [*ifname_order_prefix*]
|
||||
# Centos and Ubuntu at boot time Up and configure network interfaces in
|
||||
# alphabetical order of interface configuration file names.
|
||||
@ -58,6 +71,11 @@ define l23network::l3::ifconfig (
|
||||
$netmask = '255.255.255.0',
|
||||
$gateway = undef,
|
||||
$vlandev = undef,
|
||||
$bond_master = undef,
|
||||
$bond_mode = undef,
|
||||
$bond_miimon = 100,
|
||||
$bond_lacp_rate = 1,
|
||||
$mtu = undef,
|
||||
$dns_nameservers = undef,
|
||||
$dns_search = undef,
|
||||
$dns_domain = undef,
|
||||
@ -67,11 +85,27 @@ define l23network::l3::ifconfig (
|
||||
$check_by_ping = 'gateway',
|
||||
$check_by_ping_timeout = 120,
|
||||
){
|
||||
case $ipaddr {
|
||||
'dhcp': { $method = 'dhcp' }
|
||||
'none': { $method = 'manual' }
|
||||
default: { $method = 'static' }
|
||||
$bond_modes = [
|
||||
'balance-rr',
|
||||
'active-backup',
|
||||
'balance-xor',
|
||||
'broadcast',
|
||||
'802.3ad',
|
||||
'balance-tlb',
|
||||
'balance-alb'
|
||||
]
|
||||
|
||||
if $bond_master {
|
||||
$method = 'bondslave'
|
||||
} else {
|
||||
case $ipaddr {
|
||||
'dhcp': { $method = 'dhcp' }
|
||||
'none': { $method = 'manual' }
|
||||
default: { $method = 'static' }
|
||||
}
|
||||
}
|
||||
|
||||
# OS depends constats and packages
|
||||
case $::osfamily {
|
||||
/(?i)debian/: {
|
||||
$if_files_dir = '/etc/network/interfaces.d'
|
||||
@ -79,6 +113,8 @@ define l23network::l3::ifconfig (
|
||||
if $dns_nameservers {
|
||||
$dns_nameservers_join = join($dns_nameservers, ' ')
|
||||
}
|
||||
if !defined(Package['vlan']){ package {'vlan': ensure => installed } }
|
||||
if !defined(Package['ifenslave']){ package {'ifenslave': ensure => installed } }
|
||||
}
|
||||
/(?i)redhat/: {
|
||||
$if_files_dir = '/etc/sysconfig/network-scripts'
|
||||
@ -87,13 +123,15 @@ define l23network::l3::ifconfig (
|
||||
$dns_nameservers_1 = $dns_nameservers[0]
|
||||
$dns_nameservers_2 = $dns_nameservers[1]
|
||||
}
|
||||
if !defined(Package['vconfig']){ package {'vconfig': ensure => installed } }
|
||||
}
|
||||
default: {
|
||||
fail("Unsupported OS: ${::osfamily}/${::operatingsystem}")
|
||||
}
|
||||
}
|
||||
if !defined(Package['ethtool']){ package {'ethtool': ensure => installed } }
|
||||
|
||||
# Detect VLAN mode configuration
|
||||
# Detect VLAN and bond mode configuration
|
||||
case $interface {
|
||||
/^vlan(\d+)/: {
|
||||
$vlan_mode = 'vlan'
|
||||
@ -109,6 +147,12 @@ define l23network::l3::ifconfig (
|
||||
$vlan_id = $2
|
||||
$vlan_dev = $1
|
||||
}
|
||||
/^(bond\d+)/: {
|
||||
if ! $bond_mode or $bond_mode <0 or $bond_mode>6 {
|
||||
fail("Option bond_mode must be between 0..6, not '${bond_mode}'.")
|
||||
}
|
||||
$vlan_mode = undef
|
||||
}
|
||||
default: {
|
||||
$vlan_mode = undef
|
||||
}
|
||||
@ -142,7 +186,8 @@ define l23network::l3::ifconfig (
|
||||
content => template('l23network/interfaces.erb'),
|
||||
}
|
||||
}
|
||||
File[$interfaces] -> File[$if_files_dir]
|
||||
#File[$interfaces] -> File[$if_files_dir]
|
||||
#File<| title == $interfaces |> -> File<| title == $if_files_dir |>
|
||||
}
|
||||
|
||||
if ! defined(File[$if_files_dir]) {
|
||||
|
@ -0,0 +1,3 @@
|
||||
auto <%= interface %>
|
||||
iface <%= interface %> inet manual
|
||||
bond-master <%= @bond_master %>
|
@ -2,3 +2,9 @@ auto <%= interface %>
|
||||
iface <%= interface %> inet dhcp
|
||||
<% if @dhcp_hostname %>hostname <%= @dhcp_hostname %><% end %>
|
||||
<% if @vlan_mode %>vlan_raw_device <%= @vlan_dev %><% end %>
|
||||
<% if @mtu %>mtu <%= @mtu %><% end %>
|
||||
<% if @bond_mode %>bond-mode <%= @bond_mode %>
|
||||
slaves none<% if @bond_mode == 4 %>
|
||||
bond-miimon <%= @bond_miimon %>
|
||||
bond-lacp-rate <%= @bond_lacp_rate %><% end %>
|
||||
<% end %>
|
@ -3,3 +3,9 @@ iface <%= interface %> inet manual
|
||||
<% if @vlan_mode %>vlan_raw_device <%= @vlan_dev %><% end %>
|
||||
up ip l set <%= interface %> up
|
||||
down ip l set <%= interface %> down
|
||||
<% if @mtu %>mtu <%= @mtu %><% end %>
|
||||
<% if @bond_mode %>bond-mode <%= @bond_mode %>
|
||||
slaves none<% if @bond_mode == 4 %>
|
||||
bond-miimon <%= @bond_miimon %>
|
||||
bond-lacp-rate <%= @bond_lacp_rate %><% end %>
|
||||
<% end %>
|
||||
|
@ -7,3 +7,9 @@ netmask <%= netmask %>
|
||||
<% if @dns_nameservers_join %>dns-nameservers <%= @dns_nameservers_join %><% end %>
|
||||
<% if @dns_search %>dns-search <%= @dns_search %><% end %>
|
||||
<% if @dns_domain %>dns-domain <%= @dns_domain %><% end %>
|
||||
<% if @mtu %>mtu <%= @mtu %><% end %>
|
||||
<% if @bond_mode %>bond-mode <%= @bond_mode %>
|
||||
slaves none<% if @bond_mode == 4 %>
|
||||
bond-miimon <%= @bond_miimon %>
|
||||
bond-lacp-rate <%= @bond_lacp_rate %><% end %>
|
||||
<% end %>
|
@ -0,0 +1,6 @@
|
||||
DEVICE=<%= interface %>
|
||||
BOOTPROTO=none
|
||||
ONBOOT=yes
|
||||
USERCTL=no
|
||||
MASTER=<%= @bond_master %>
|
||||
SLAVE=yes
|
@ -6,3 +6,5 @@ USERCTL=no
|
||||
<% if @vlan_mode %>VLAN=yes<% end %>
|
||||
<% if @vlan_mode == 'vlan' %>VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
|
||||
PHYSDEV=<%= @vlan_dev %><% end %>
|
||||
<% if @mtu %>MTU=<%= @mtu %><% end %>
|
||||
<% if @bond_mode %>BONDING_OPTS="mode=<%= @bond_mode %><% if @bond_mode == 4 %> miimon=<%= @bond_miimon %> bond-lacp-rate=<%= @bond_lacp_rate %><% end %>"<% end %>
|
||||
|
@ -5,3 +5,5 @@ USERCTL=no
|
||||
<% if @vlan_mode %>VLAN=yes<% end %>
|
||||
<% if @vlan_mode == 'vlan' %>VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
|
||||
PHYSDEV=<%= @vlan_dev %><% end %>
|
||||
<% if @mtu %>MTU=<%= @mtu %><% end %>
|
||||
<% if @bond_mode %>BONDING_OPTS="mode=<%= @bond_mode %><% if @bond_mode == 4 %> miimon=<%= @bond_miimon %> bond-lacp-rate=<%= @bond_lacp_rate %><% end %>"<% end %>
|
||||
|
@ -10,3 +10,5 @@ PHYSDEV=<%= @vlan_dev %><% end %>
|
||||
<% if @def_gateway %>GATEWAY=<%= @def_gateway %><% end %>
|
||||
<% if @dns_nameservers_1 %>DNS1=<%= @dns_nameservers_1 %><% end %>
|
||||
<% if @dns_nameservers_2 %>DNS2=<%= @dns_nameservers_2 %><% end %>
|
||||
<% if @mtu %>MTU=<%= @mtu %><% end %>
|
||||
<% if @bond_mode %>BONDING_OPTS="mode=<%= @bond_mode %><% if @bond_mode == 4 %> miimon=<%= @bond_miimon %> bond-lacp-rate=<%= @bond_lacp_rate %><% end %>"<% end %>
|
||||
|
Loading…
Reference in New Issue
Block a user