# unkin networking module class networking ( Hash $interfaces = {}, Hash $interface_defaults = {}, Hash $routes = {}, Hash $route_defaults = {}, Boolean $use_networkd = lookup('systemd::manage_networkd', undef, undef, false), ){ include network include networking::params if $use_networkd { include systemd service { 'NetworkManager': ensure => 'stopped', enable => false, } $interfaces.each |String $iface, Hash $data| { $type = $data['type'] #$params = $data.filter |$key, $value| { $key != 'type' } case $type { 'bridge': { networking::bridge { $iface: * => $data } } 'dummy': { networking::dummy { $iface: * => $data } } 'static': { networking::static { $iface: * => $data } } 'physical': { networking::static { $iface: * => $data } } default: { fail("Unsupported interface type '${type}' for interface '${iface}'") } } } }else{ # manage interfaces $interfaces.each | $interface, $data | { $merged_data = merge($interface_defaults, $data) network_config { $interface: * => $merged_data, notify => Exec['networking_reload_network'], } } # manage routes $routes.each | $route, $data | { $merged_data = merge($route_defaults, $data) network_route { $route: * => $merged_data, notify => Exec['networking_reload_network'], } } } # determine which networking service to restart $restart_command = $use_networkd ? { true => '/usr/bin/systemctl restart systemd-networkd', default => $facts['os']['family'] ? { 'RedHat' => $facts['os']['release']['major'] ? { '8' => '/usr/bin/systemctl restart network', '9' => '/usr/bin/systemctl restart NetworkManager', default => fail('Unsupported RedHat OS release for networking restart'), }, 'Debian' => '/usr/bin/systemctl restart networking', default => fail('Unsupported OS in networking-restart-command'), } } # restart network/networking only if $restart_networking boolean is true exec { 'networking_reload_network': command => $restart_command, refreshonly => true, } # prevent DNS from being overwritten by networkmanager if $networking::params::nwmgr_dns_none { file {'/etc/NetworkManager/conf.d/dns_none.conf': ensure => 'file', owner => 'root', group => 'root', mode => '0655', content => "[main]\ndns=none", } }else{ file {'/etc/NetworkManager/conf.d/dns_none.conf': ensure => 'absent', } } }