summaryrefslogtreecommitdiff
path: root/modules/networking/manifests
diff options
context:
space:
mode:
Diffstat (limited to 'modules/networking/manifests')
-rw-r--r--modules/networking/manifests/init.pp18
-rw-r--r--modules/networking/manifests/networkd.pp32
2 files changed, 50 insertions, 0 deletions
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,
+ }
+ }
+}