diff --git a/network/manifests/init.pp b/network/manifests/init.pp index 4298a37..0ed1f6b 100644 --- a/network/manifests/init.pp +++ b/network/manifests/init.pp @@ -230,10 +230,13 @@ define network::interface($ipaddr = "none", $eaddr = "none", $netmask = "none", # $device: # Interface to use for this route. # -define network::route($gateway, $device, $ipv6gateway = "") { +define network::route($gateway = "NONE", $device, $ipv6gateway = "") { case $name { "default": { + if "${gateway}" == "NONE" { + fail("Cannot set empty gateway for default route.") + } case $operatingsystem { centos,fedora: { include network::helper::restart @@ -280,7 +283,24 @@ define network::route($gateway, $device, $ipv6gateway = "") { } } } - default: { fail("Only default routes are currently supported") } + default: { + case $operatingsystem { + "fedora","centos": { + include network::helper::restart + file { "/etc/sysconfig/network-scripts/route-${device}": + ensure => present, + content => template("network/route-if.erb"), + mode => 0644, + owner => "root", + group => "root", + notify => Exec["restart-network"], + } + } + default: { + fail("Custom routes not supported in ${operatingsystem}") + } + } + } } } diff --git a/network/templates/route-if.erb b/network/templates/route-if.erb new file mode 100644 index 0000000..93baca6 --- /dev/null +++ b/network/templates/route-if.erb @@ -0,0 +1,3 @@ +ADDRESS0=<%= name.split('/')[0] %> +NETMASK0=<%= name.split('/')[1] %> +<% if gateway != "NONE" %>GATEWAY0=<%= gateway %><% end %>