2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ matrix:
env: PUPPET_GEM_VERSION="~> 4.0"
- rvm: 2.4.1
env: PUPPET_GEM_VERSION="~> 5.0"
- rvm: 2.5.1
env: PUPPET_GEM_VERSION="~> 6.0"
notifications:
email: false
deploy:
Expand Down
25 changes: 23 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,30 @@ All notable changes to this project will be documented in this file.
Each new release typically also includes the latest modulesync defaults.
These should not affect the functionality of the module.

## [v2.1.0](https://github.com/camptocamp/puppet-systemd/tree/v2.1.0) (2018-08-31)
## [v2.2.0](https://github.com/camptocamp/puppet-systemd/tree/v2.2.0) (2019-02-11)

[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/2.0.0...v2.1.0)
[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/2.1.0...v2.2.0)

**Implemented enhancements:**

- Puppet 6 support [\#96](https://github.com/camptocamp/puppet-systemd/pull/96) ([ekohl](https://github.com/ekohl))
- Manage journald service and configuration [\#89](https://github.com/camptocamp/puppet-systemd/pull/89) ([treydock](https://github.com/treydock))
- Add support for DNSoverTLS [\#88](https://github.com/camptocamp/puppet-systemd/pull/88) ([shibumi](https://github.com/shibumi))
- unit.d directory should be purged of unmanaged dropin files [\#41](https://github.com/camptocamp/puppet-systemd/pull/41) ([treydock](https://github.com/treydock))
- Add Journald support [\#14](https://github.com/camptocamp/puppet-systemd/pull/14) ([duritong](https://github.com/duritong))

**Closed issues:**

- Hiera usage for systemd::unit\_file [\#86](https://github.com/camptocamp/puppet-systemd/issues/86)
- Please push a new module to the forge that includes service\_limits [\#25](https://github.com/camptocamp/puppet-systemd/issues/25)

**Merged pull requests:**

- Allow specifying owner/group/mode/show\_diff [\#94](https://github.com/camptocamp/puppet-systemd/pull/94) ([simondeziel](https://github.com/simondeziel))

## [2.1.0](https://github.com/camptocamp/puppet-systemd/tree/2.1.0) (2018-08-31)

[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/2.0.0...2.1.0)

**Implemented enhancements:**

Expand Down
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,8 @@ $manage_networkd is required if you want to reload it for new

When configuring `systemd::resolved` you could set `dns_stub_resolver` to false (default) to use a *standard* `/etc/resolved.conf`, or you could set it to `true` to use the local resolver provided by `systemd-resolved`.

Systemd has introduced `DNS Over TLS` in the release 239. Currently two states are supported `no` and `opportunistic`. When enabled with `opportunistic` `systemd-resolved` will start a TCP-session to a DNS server with `DNS Over TLS` support. Note that there will be no host checking for `DNS Over TLS` due to missing implementation in `systemd-resolved`.

It is possible to configure the default ntp servers in /etc/systemd/timesyncd.conf:

```puppet
Expand Down Expand Up @@ -207,3 +209,14 @@ class{'systemd':
}
}
```
### journald configuration

It also allows you to manage journald settings. You can manage journald settings through setting the `journald_settings` parameter. If you want a parameter to be removed, you can pass its value as params.

```yaml
systemd::journald_settings:
Storage: auto
MaxRetentionSec: 5day
MaxLevelStore:
ensure: absent
```
3 changes: 3 additions & 0 deletions data/common.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ systemd::domains: ~
systemd::llmnr: ~
systemd::multicast_dns: ~
systemd::dnssec: ~
systemd::dnsovertls: false
systemd::cache: false
systemd::dns_stub_listener: ~
systemd::use_stub_resolver: false
Expand All @@ -19,3 +20,5 @@ systemd::ntp_server: ~
systemd::fallback_ntp_server: ~
systemd::manage_accounting: false
systemd::accounting: {}
systemd::purge_dropin_dirs: true
systemd::journald_settings: {}
53 changes: 36 additions & 17 deletions manifests/dropin_file.pp
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,30 @@
#
# * Mutually exclusive with both ``$source`` and ``$content``
#
# @attr owner
# The owner to set on the dropin file
#
# @attr group
# The group to set on the dropin file
#
# @attr mode
# The mode to set on the dropin file
#
# @attr show_diff
# Whether to show the diff when updating dropin file
#
define systemd::dropin_file(
Systemd::Unit $unit,
Systemd::Dropin $filename = $name,
Enum['present', 'absent', 'file'] $ensure = 'present',
Stdlib::Absolutepath $path = '/etc/systemd/system',
Optional[String] $content = undef,
Optional[String] $source = undef,
Optional[Stdlib::Absolutepath] $target = undef,
Systemd::Dropin $filename = $name,
Enum['present', 'absent', 'file'] $ensure = 'present',
Stdlib::Absolutepath $path = '/etc/systemd/system',
Optional[String] $content = undef,
Optional[String] $source = undef,
Optional[Stdlib::Absolutepath] $target = undef,
String $owner = 'root',
String $group = 'root',
String $mode = '0444',
Boolean $show_diff = true,
) {
include systemd

Expand All @@ -49,20 +65,23 @@

if $ensure != 'absent' {
ensure_resource('file', "${path}/${unit}.d", {
ensure => directory,
owner => 'root',
group => 'root',
ensure => directory,
owner => 'root',
group => 'root',
recurse => $::systemd::purge_dropin_dirs,
purge => $::systemd::purge_dropin_dirs,
})
}

file { "${path}/${unit}.d/${filename}":
ensure => $_ensure,
content => $content,
source => $source,
target => $target,
owner => 'root',
group => 'root',
mode => '0444',
notify => Class['systemd::systemctl::daemon_reload'],
ensure => $_ensure,
content => $content,
source => $source,
target => $target,
owner => $owner,
group => $group,
mode => $mode,
show_diff => $show_diff,
notify => Class['systemd::systemctl::daemon_reload'],
}
}
52 changes: 32 additions & 20 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
# @param dnssec
# Takes a boolean argument or "allow-downgrade".
#
# @param dnsovertls
# Takes a boolean argument or "opportunistic"
#
# @param cache
# Takes a boolean argument.
#
Expand Down Expand Up @@ -65,27 +68,34 @@
# A space-separated list of NTP server host names or IP addresses to be used
# as the fallback NTP servers. Any per-interface NTP servers obtained from
# systemd-networkd take precedence over this setting. requires puppetlabs-inifile
#
# @param journald_settings
# Config Hash that is used to configure settings in journald.conf
#
class systemd (
Hash[String,Hash[String, Any]] $service_limits,
Boolean $manage_resolved,
Enum['stopped','running'] $resolved_ensure,
Optional[Variant[Array[String],String]] $dns,
Optional[Variant[Array[String],String]] $fallback_dns,
Optional[Variant[Array[String],String]] $domains,
Optional[Variant[Boolean,Enum['resolve']]] $llmnr,
Optional[Variant[Boolean,Enum['resolve']]] $multicast_dns,
Optional[Variant[Boolean,Enum['allow-downgrade']]] $dnssec,
Boolean $cache,
Optional[Variant[Boolean,Enum['udp','tcp']]] $dns_stub_listener,
Boolean $use_stub_resolver,
Boolean $manage_networkd,
Enum['stopped','running'] $networkd_ensure,
Boolean $manage_timesyncd,
Enum['stopped','running'] $timesyncd_ensure,
Optional[Variant[Array,String]] $ntp_server,
Optional[Variant[Array,String]] $fallback_ntp_server,
Boolean $manage_accounting,
Hash[String,String] $accounting,
Hash[String,Hash[String, Any]] $service_limits,
Boolean $manage_resolved,
Enum['stopped','running'] $resolved_ensure,
Optional[Variant[Array[String],String]] $dns,
Optional[Variant[Array[String],String]] $fallback_dns,
Optional[Variant[Array[String],String]] $domains,
Optional[Variant[Boolean,Enum['resolve']]] $llmnr,
Optional[Variant[Boolean,Enum['resolve']]] $multicast_dns,
Optional[Variant[Boolean,Enum['allow-downgrade']]] $dnssec,
Optional[Variant[Boolean,Enum['opportunistic', 'no']]] $dnsovertls,
Boolean $cache,
Optional[Variant[Boolean,Enum['udp','tcp']]] $dns_stub_listener,
Boolean $use_stub_resolver,
Boolean $manage_networkd,
Enum['stopped','running'] $networkd_ensure,
Boolean $manage_timesyncd,
Enum['stopped','running'] $timesyncd_ensure,
Optional[Variant[Array,String]] $ntp_server,
Optional[Variant[Array,String]] $fallback_ntp_server,
Boolean $manage_accounting,
Hash[String,String] $accounting,
Boolean $purge_dropin_dirs,
Systemd::JournaldSettings $journald_settings,
){

contain systemd::systemctl::daemon_reload
Expand All @@ -107,4 +117,6 @@
if $manage_accounting {
contain systemd::system
}

contain systemd::journald
}
31 changes: 31 additions & 0 deletions manifests/journald.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# **NOTE: THIS IS A [PRIVATE](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private) CLASS**
#
# This class provides a solution to enable accounting
#
# https://www.freedesktop.org/software/systemd/man/journald.conf.html
class systemd::journald {

assert_private()

service{'systemd-journald':
ensure => running,
}
$systemd::journald_settings.each |$option, $value| {
ini_setting{
$option:
path => '/etc/systemd/journald.conf',
section => 'Journal',
setting => $option,
notify => Service['systemd-journald'],
}
if $value =~ Hash {
Ini_setting[$option]{
* => $value,
}
} else {
Ini_setting[$option]{
value => $value,
}
}
}
}
33 changes: 19 additions & 14 deletions manifests/network.pp
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# -- Define: systemd::network
# Creates network config for systemd-networkd
define systemd::network (
Enum['file', 'absent'] $ensure = file,
Stdlib::Absolutepath $path = '/etc/systemd/network',
Optional[String] $content = undef,
Optional[String] $source = undef,
Optional[Stdlib::Absolutepath] $target = undef,
Boolean $restart_service = true,
Enum['file', 'absent'] $ensure = file,
Stdlib::Absolutepath $path = '/etc/systemd/network',
Optional[String] $content = undef,
Optional[String] $source = undef,
Optional[Stdlib::Absolutepath] $target = undef,
String $owner = 'root',
String $group = 'root',
String $mode = '0444',
Boolean $show_diff = true,
Boolean $restart_service = true,
){

include systemd
Expand All @@ -18,13 +22,14 @@
}

file { "${path}/${name}":
ensure => $ensure,
content => $content,
source => $source,
target => $target,
owner => 'root',
group => 'root',
mode => '0444',
notify => $notify,
ensure => $ensure,
content => $content,
source => $source,
target => $target,
owner => $owner,
group => $group,
mode => $mode,
show_diff => $show_diff,
notify => $notify,
}
}
41 changes: 31 additions & 10 deletions manifests/resolved.pp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
# @param dnssec
# Takes a boolean argument or "allow-downgrade".
#
# @param dnsovertls
# Takes a boolean argument or "opportunistic" or "no"
#
# @param cache
# Takes a boolean argument.
#
Expand All @@ -42,16 +45,17 @@
# as /etc/resolv.conf. When "true", it uses /var/run/systemd/resolve/stub-resolv.conf
#
class systemd::resolved (
Enum['stopped','running'] $ensure = $systemd::resolved_ensure,
Optional[Variant[Array[String],String]] $dns = $systemd::dns,
Optional[Variant[Array[String],String]] $fallback_dns = $systemd::fallback_dns,
Optional[Variant[Array[String],String]] $domains = $systemd::domains,
Optional[Variant[Boolean,Enum['resolve']]] $llmnr = $systemd::llmnr,
Optional[Variant[Boolean,Enum['resolve']]] $multicast_dns = $systemd::multicast_dns,
Optional[Variant[Boolean,Enum['allow-downgrade']]] $dnssec = $systemd::dnssec,
Boolean $cache = $systemd::cache,
Optional[Variant[Boolean,Enum['udp', 'tcp']]] $dns_stub_listener = $systemd::dns_stub_listener,
Boolean $use_stub_resolver = $systemd::use_stub_resolver,
Enum['stopped','running'] $ensure = $systemd::resolved_ensure,
Optional[Variant[Array[String],String]] $dns = $systemd::dns,
Optional[Variant[Array[String],String]] $fallback_dns = $systemd::fallback_dns,
Optional[Variant[Array[String],String]] $domains = $systemd::domains,
Optional[Variant[Boolean,Enum['resolve']]] $llmnr = $systemd::llmnr,
Optional[Variant[Boolean,Enum['resolve']]] $multicast_dns = $systemd::multicast_dns,
Optional[Variant[Boolean,Enum['allow-downgrade']]] $dnssec = $systemd::dnssec,
Optional[Variant[Boolean,Enum['opportunistic', 'no']]] $dnsovertls = $systemd::dnsovertls,
Boolean $cache = $systemd::cache,
Optional[Variant[Boolean,Enum['udp', 'tcp']]] $dns_stub_listener = $systemd::dns_stub_listener,
Boolean $use_stub_resolver = $systemd::use_stub_resolver,
){

assert_private()
Expand Down Expand Up @@ -176,6 +180,23 @@
}
}

$_dnsovertls = $dnsovertls ? {
true => 'opportunistic',
false => false,
default => $dnsovertls,
}

if $_dnsovertls {
ini_setting{ 'dnsovertls':
ensure => 'present',
value => $_dnsovertls,
setting => 'DNSOverTLS',
section => 'Resolve',
path => '/etc/systemd/resolved.conf',
notify => Service['systemd-resolved'],
}
}

$_cache = $cache ? {
true => 'yes',
false => 'no',
Expand Down
Loading