From 230c2c0e2b65c5804923a2050e38de9c22141b16 Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Fri, 19 Nov 2010 16:48:25 +0200 Subject: [PATCH] Added initial support for Debian and Ubuntu to network module --- network/files/interfaces.in | 6 +++ network/manifests/init.pp | 59 ++++++++++++++++++++++++ network/templates/ifcfg-if.erb | 2 +- network/templates/interfaces-gateway.erb | 3 ++ network/templates/interfaces-if.erb | 16 +++++++ 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 network/files/interfaces.in create mode 100644 network/templates/interfaces-gateway.erb create mode 100644 network/templates/interfaces-if.erb diff --git a/network/files/interfaces.in b/network/files/interfaces.in new file mode 100644 index 0000000..02d4cf3 --- /dev/null +++ b/network/files/interfaces.in @@ -0,0 +1,6 @@ +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +# The loopback network interface +auto lo +iface lo inet loopback diff --git a/network/manifests/init.pp b/network/manifests/init.pp index e05b9fb..6b34791 100644 --- a/network/manifests/init.pp +++ b/network/manifests/init.pp @@ -19,10 +19,44 @@ class network::helper::restart { refreshonly => true, } } + debian,ubuntu: { + exec { "restart-network": + command => "/etc/init.d/networking restart", + onlyif => "cat /etc/network/interfaces.in /etc/network/interfaces.d/*.conf > /etc/network/interfaces", + path => "/bin:/usr/bin:/sbin:/usr/sbin", + refreshonly => true, + } + } } } +# Install Debian/Ubuntu specific support files. +# +class network::helper::debian { + + file { "/etc/network/interfaces.in": + ensure => present, + mode => 0644, + owner => root, + group => root, + source => "puppet:///network/interfaces.in", + } + + file { "/etc/network/interfaces.d": + ensure => directory, + mode => 0644, + owner => root, + group => root, + purge => true, + force => true, + recurse => true, + source => "puppet:///custom/empty", + } + +} + + # Configure interface. # # === Parameters @@ -93,6 +127,18 @@ define network::interface($options = [], $ipaddr = "none", $netmask = "none", $i require => File["/etc/sysconfig/network-scripts/ifcfg-${name}"], } } + debian,ubuntu: { + include network::helper::debian + file { "/etc/network/interfaces.d/${name}.conf": + ensure => present, + content => template("network/interfaces-if.erb"), + mode => 0644, + owner => root, + group => root, + notify => Exec["restart-network"], + require => File["/etc/network/interfaces.d", "/etc/network/interfaces.in"], + } + } default: { fail("Network module not supported in ${operatingsystem}") } @@ -137,6 +183,19 @@ define network::route($gateway, $device) { notify => Exec["restart-network"], } } + debian,ubuntu: { + include network::helper::restart + include network::helper::debian + file { "/etc/network/interfaces.d/${device}-gateway.conf": + ensure => present, + content => template("network/interfaces-gateway.erb"), + mode => 0644, + owner => root, + group => root, + notify => Exec["restart-network"], + require => File["/etc/network/interfaces.d/${device}.conf"], + } + } default: { fail("Network module not supported in ${operatingsystem}") } diff --git a/network/templates/ifcfg-if.erb b/network/templates/ifcfg-if.erb index de8e930..9424fd3 100644 --- a/network/templates/ifcfg-if.erb +++ b/network/templates/ifcfg-if.erb @@ -4,7 +4,7 @@ HWADDR=<%= scope.lookupvar("macaddress_" + name) %> <% end -%> ONBOOT=yes BOOTPROTO=<%= proto %> -<% if ipaddr != 'none' -%> +<% if ipaddr != 'none' and ipaddr != 'dhcp' -%> IPADDR=<%= ipaddr %> <% end -%> <% if netmask != 'none' -%> diff --git a/network/templates/interfaces-gateway.erb b/network/templates/interfaces-gateway.erb new file mode 100644 index 0000000..ce2cf09 --- /dev/null +++ b/network/templates/interfaces-gateway.erb @@ -0,0 +1,3 @@ +<% if gateway != 'none' -%> + gateway <%= gateway %> +<% end -%> diff --git a/network/templates/interfaces-if.erb b/network/templates/interfaces-if.erb new file mode 100644 index 0000000..75bccf6 --- /dev/null +++ b/network/templates/interfaces-if.erb @@ -0,0 +1,16 @@ + +auto <%= name %> +<% if proto == 'none' -%> +iface <%= name %> inet manual +<% else -%> +iface <%= name %> inet <%= proto %> +<% end -%> +<% if ipaddr != 'none' and ipaddr != 'dhcp' -%> + address <%= ipaddr %> +<% end -%> +<% if netmask != 'none' -%> + netmask <%= netmask %> +<% end -%> +<% options.each do |val| -%> + <%= val %> +<% end -%>