Defined Type: wireguard::provider::systemd

Defined in:
manifests/provider/systemd.pp

Summary

Manage the systemd components of a wireguard setup

Overview

Parameters:

  • interface (String[1]) (defaults to: $title)
  • ensure (Enum['present', 'absent']) (defaults to: 'present')
  • peers (Wireguard::Peers) (defaults to: [])
  • dport (Integer[1024, 65000]) (defaults to: Integer(regsubst($title, '^\D+(\d+)$', '\1')))
  • addresses (Array[Hash[String,Variant[Stdlib::IP::Address::V4,Stdlib::IP::Address::V6]]]) (defaults to: [])
  • description (Optional[String[1]]) (defaults to: undef)
  • mtu (Optional[Integer[1280, 9000]]) (defaults to: undef)
  • routes (Array[Hash[String[1], Variant[String[1], Boolean]]]) (defaults to: [])


4
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
# File 'manifests/provider/systemd.pp', line 4

define wireguard::provider::systemd (
  String[1] $interface = $title,
  Enum['present', 'absent'] $ensure = 'present',
  Wireguard::Peers $peers = [],
  Integer[1024, 65000] $dport = Integer(regsubst($title, '^\D+(\d+)$', '\1')),
  Array[Hash[String,Variant[Stdlib::IP::Address::V4,Stdlib::IP::Address::V6]]] $addresses = [],
  Optional[String[1]] $description = undef,
  Optional[Integer[1280, 9000]] $mtu = undef,
  Array[Hash[String[1], Variant[String[1], Boolean]]] $routes = [],
) {
  assert_private()

  $systemd_ensure = $ensure ? {
    'present' => 'file',
    default   => $ensure,
  }

  systemd::network { "${interface}.netdev":
    ensure          => $systemd_ensure,
    content         => epp("${module_name}/netdev.epp", {
        'interface'   => $interface,
        'dport'       => $dport,
        'description' => $description,
        'mtu'         => $mtu,
        'peers'       => $peers,
    }),
    restart_service => true,
    owner           => 'root',
    group           => 'systemd-network',
    mode            => '0440',
    require         => File["/etc/wireguard/${interface}"],
  }

  $network_epp_params = {
    'interface'       => $interface,
    'addresses'       => $addresses,
    'routes'          => $routes,
  }

  systemd::network { "${interface}.network":
    ensure          => $systemd_ensure,
    content         => epp("${module_name}/network.epp", $network_epp_params),
    restart_service => true,
    owner           => 'root',
    group           => 'systemd-network',
    mode            => '0440',
  }
}