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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'manifests/networkd.pp', line 47
class systemd::networkd (
Enum['stopped','running'] $ensure = $systemd::networkd_ensure,
Stdlib::Absolutepath $path = $systemd::network_path,
Boolean $manage_all_network_files = $systemd::manage_all_network_files,
Hash[String[1],Systemd::Interface::Link] $link_profiles = {},
Hash[String[1],Systemd::Interface::Netdev] $netdev_profiles = {},
Hash[String[1],Systemd::Interface::Network] $network_profiles = {},
Hash[String[1],Systemd::Interface] $interfaces = {},
) {
assert_private()
$_enable_networkd = $ensure ? {
'stopped' => false,
'running' => true,
default => $ensure,
}
service { 'systemd-networkd':
ensure => $ensure,
enable => $_enable_networkd,
}
# this directory is created by systemd
# we define it here to purge non-managed files
if $manage_all_network_files {
file { $path:
ensure => 'directory',
recurse => true,
purge => true,
notify => Service['systemd-networkd'],
}
}
$interfaces.each | String[1] $interface_name, Systemd::Interface $interface | {
$_filename=pick($interface['filename'], $interface_name)
if 'link' in $interface.keys() {
systemd::network { "${_filename}.link":
path => $path,
content => epp('systemd/network.epp', {
fname => "${_filename}.link",
config => deep_merge(pick($link_profiles[$interface_name], {}), $interface['link']),
}),
}
}
if 'netdev' in $interface.keys() {
systemd::network { "${_filename}.netdev":
path => $path,
content => epp('systemd/network.epp', {
fname => "${_filename}.netdev",
config => deep_merge(pick($netdev_profiles[$interface_name], {}), $interface['netdev']),
}),
}
}
if 'network' in $interface.keys() {
systemd::network { "${_filename}.network":
path => $path,
content => epp('systemd/network.epp', {
fname => "${_filename}.network",
config => deep_merge(pick($network_profiles[$interface_name], {}), $interface['network']),
}),
}
}
}
}
|