Defined Type: psick::network::netplan::interface
- Defined in:
- manifests/network/netplan/interface.pp
Overview
Define psick::network::netplan::interface
Define to manage an interface via netplan
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'manifests/network/netplan/interface.pp', line 5
define psick::network::netplan::interface (
Enum['present','absent'] $ensure = 'present',
String $interface_name = $title,
String $config_file_name = "50-${title}.yaml",
String $interface_type = 'ethernet',
Hash $interface_options = {},
Stdlib::Absolutepath $config_dir_path = '/etc/netplan',
Optional[String] $reload_command = 'netplan apply', # lint:ignore:optional_default
String $renderer = 'networkd',
Numeric $version = 2,
Psick::Network::NetplanDhcp $dhcp4 = false,
Psick::Network::NetplanDhcp $dhcp6 = false,
Optional[Stdlib::MAC] $macaddress = getvar("networking.interfaces.${interface_name}.mac"),
Variant[Undef,Psick::Network::NetplanAddresses] $addresses = undef,
Variant[Undef,Array] $routes = undef,
Optional[Stdlib::IP::Address::V4] $gateway4 = undef,
Optional[Stdlib::IP::Address::V6] $gateway6 = undef,
Optional[Hash] $nameservers = undef,
Optional[Hash] $parameters = undef,
Optional[String] $file_content = undef,
Optional[String] $file_source = undef,
) {
# Define how to restart network service
if $reload_command {
$network_notify = 'Exec[psick::network::netplan::interface reload]'
if !defined(Exec['psick::network::netplan::interface reload']) {
exec { 'psick::network::netplan::interface reload':
command => $reload_command,
refreshonly => true,
path => $facts['path'],
}
}
pick_default($reload_command, $psick::network::manage_config_file_notify)
} else {
$network_notify = pick_default($psick::network::manage_config_file_notify)
}
$match_values = $macaddress ? {
undef => {},
default => {
match => {
macaddress => $macaddress,
},
}
}
$default_values = {
dhcp4 => $dhcp4,
dhcp6 => $dhcp6,
addresses => $addresses,
gateway4 => $gateway4,
gateway6 => $gateway6,
routes => $routes,
nameservers => $nameservers,
parameters => $parameters,
}
$netplan_data = {
'network' => {
'version' => $version,
"${interface_type}s" => {
$interface_name => delete_undef_values($default_values + $match_values + $interface_options),
},
},
}
$real_file_content = $file_source ? {
undef => pick($file_content,to_yaml($netplan_data)),
default => undef,
}
file { "${config_dir_path}/${config_file_name}":
ensure => $ensure,
content => $real_file_content,
source => $file_source,
notify => $network_notify,
}
}
|