From a261aa089f879b6854c7b8fc7676d6b23ac25588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 2 Jan 2022 04:31:50 +0100 Subject: Network rewrites. --- modules/networking/manifests/init.pp | 18 ++++++++++++++++++ modules/networking/manifests/networkd.pp | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 modules/networking/manifests/init.pp create mode 100644 modules/networking/manifests/networkd.pp (limited to 'modules/networking/manifests') diff --git a/modules/networking/manifests/init.pp b/modules/networking/manifests/init.pp new file mode 100644 index 0000000..bd1fda8 --- /dev/null +++ b/modules/networking/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/modules/networking/manifests/networkd.pp b/modules/networking/manifests/networkd.pp new file mode 100644 index 0000000..4376a29 --- /dev/null +++ b/modules/networking/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, + } + } +} -- cgit v1.2.3