16d5f4348d46d64a6ef802a9bf05275659cf4b9b
[mirror/dsa-puppet.git] / 3rdparty / modules / systemd / manifests / timesyncd.pp
1 # **NOTE: THIS IS A [PRIVATE](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private) CLASS**
2 #
3 # This class provides an abstract way to trigger systemd-timesyncd
4 #
5 # @param ensure
6 #   The state that the ``networkd`` service should be in
7 #
8 # @param $ntp_server
9 #   A space-separated list of NTP servers, will be combined with interface specific
10 #   addresses from systemd-networkd. requires puppetlabs-inifile
11 #
12 # @param fallback_ntp_server
13 #   A space-separated list of NTP server host names or IP addresses to be used
14 #   as the fallback NTP servers. Any per-interface NTP servers obtained from
15 #   systemd-networkd take precedence over this setting. requires puppetlabs-inifile
16 class systemd::timesyncd (
17   Enum['stopped','running'] $ensure                    = $systemd::timesyncd_ensure,
18   Optional[Variant[Array,String]] $ntp_server          = $systemd::ntp_server,
19   Optional[Variant[Array,String]] $fallback_ntp_server = $systemd::fallback_ntp_server,
20 ){
21
22   assert_private()
23
24   $_enable_timesyncd = $ensure ? {
25     'stopped' => false,
26     'running' => true,
27     default   => $ensure,
28   }
29
30   service{ 'systemd-timesyncd':
31     ensure => $ensure,
32     enable => $_enable_timesyncd,
33   }
34
35   if $ntp_server {
36     if $ntp_server =~ String {
37       $_ntp_server = $ntp_server
38     } else {
39       $_ntp_server = join($ntp_server, ' ')
40     }
41     ini_setting{'ntp_server':
42       ensure  => 'present',
43       value   => $_ntp_server,
44       setting => 'NTP',
45       section => 'Time',
46       path    => '/etc/systemd/timesyncd.conf',
47       notify  => Service['systemd-timesyncd'],
48     }
49   }
50
51   if $fallback_ntp_server {
52     if $fallback_ntp_server =~ String {
53       $_fallback_ntp_server = $fallback_ntp_server
54     } else {
55       $_fallback_ntp_server = join($fallback_ntp_server, ' ')
56     }
57     ini_setting{'fallback_ntp_server':
58       ensure  => 'present',
59       value   => $_fallback_ntp_server,
60       setting => 'FallbackNTP',
61       section => 'Time',
62       path    => '/etc/systemd/timesyncd.conf',
63       notify  => Service['systemd-timesyncd'],
64     }
65   }
66 }