diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-01-02 04:31:50 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-01-02 04:44:39 +0100 |
commit | a7b0f72f220528ba4de33f52104fe674000f625a (patch) | |
tree | eae89d0adf398eaa9e31432b85fe9d0c926bd361 /manifests | |
download | networking-a7b0f72f220528ba4de33f52104fe674000f625a.tar.gz networking-a7b0f72f220528ba4de33f52104fe674000f625a.tar.xz |
Network rewrites.
Diffstat (limited to 'manifests')
-rw-r--r-- | manifests/init.pp | 18 | ||||
-rw-r--r-- | manifests/networkd.pp | 32 |
2 files changed, 50 insertions, 0 deletions
diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000..bd1fda8 --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,18 @@ +class networking ( + String $addr4, + String $gw4, # TODO default this to first address in subnet +) { + + # TODO choose a sensible provider here + + networking::networkd { '20-puppet': + network => { + 'Address' => $addr4, + 'Gateway' => $gw4, + 'IPv6AcceptRA' => 1, + }, + notify_ => true, + manage_directory => true, + } + +} diff --git a/manifests/networkd.pp b/manifests/networkd.pp new file mode 100644 index 0000000..4376a29 --- /dev/null +++ b/manifests/networkd.pp @@ -0,0 +1,32 @@ +define networking::networkd ( + Hash $network, + Optional[Hash] $match = { 'Name' => $facts['networking']['primary'] }, + String $root = '/', + String $path = "${root}/etc/systemd/network", + String $filename = $name, + String $file = "${path}/${filename}.conf", + Boolean $notify_ = true, + Boolean $manage_directory = true, +) { + + if $manage_directory { + file { $path: + ensure => directory, + purge => true, + recurse => true, + } + } + + inifile::create_ini_settings({ + 'Match' => $match, + 'Network' => $network, + }, { path => $file, }) + + if $notify_ { + Ini_Setting <| path == $file |> + ~> exec { 'networkctl reload': + path => ['/bin', '/usr/bin',], + refreshonly => true, + } + } +} |