diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c50b16..1b6e7af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 0.2.12 + +* Added flag for systemd release: **eyp_systemd_release** +* Added support for **UnsetEnvironment** to **systemd::service** and **systemd::service::dropin** - fixes [issue 152](https://github.com/NTTCom-MS/eyp-systemd/issues/152) + ## 0.2.11 * Added **capability_bounding_set** to **systemd::service** and **systemd::service::dropin** diff --git a/lib/facter/eyp_systemd_release.rb b/lib/facter/eyp_systemd_release.rb new file mode 100644 index 0000000..8986dd1 --- /dev/null +++ b/lib/facter/eyp_systemd_release.rb @@ -0,0 +1,15 @@ +require 'puppet' + +if File.exist?('/bin/systemctl') + + systemd_release=Facter::Util::Resolution.exec('bash -c \'/bin/systemctl --version 2>/dev/null | head -n1 | awk "{ print \\$NF }" \'') + + unless systemd_release.nil? or systemd_release.empty? or !/\A\d+\z/.match(systemd_release) + Facter.add('eyp_systemd_release') do + setcode do + systemd_release + end + end + end + +end diff --git a/manifests/service.pp b/manifests/service.pp index 4e26495..a72575d 100644 --- a/manifests/service.pp +++ b/manifests/service.pp @@ -17,6 +17,7 @@ $remain_after_exit = undef, $type = undef, $env_vars = [], + $unset_env_vars = [], $environment_files = [], $permissions_start_only = false, $timeoutstartsec = undef, @@ -86,6 +87,20 @@ fail('Incompatible options: There are multiple execstop values and Type is not "oneshot"') } + # TODO: puppet4 / puppet 6 compatibility + # if(size($unset_env_vars)>0) + # { + # if(defined($::eyp_systemd_release)) + # { + # $systemd_release=0+$::eyp_systemd_release + # + # if($systemd_release < 235) + # { + # fail("ERROR: UnsetEnvironment is not available for systemd < 235 - current release: ${systemd_release}") + # } + # } + # } + # if($restart!=undef) # { # # Takes one of no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always. diff --git a/manifests/service/dropin.pp b/manifests/service/dropin.pp index cc0e78b..ad24464 100644 --- a/manifests/service/dropin.pp +++ b/manifests/service/dropin.pp @@ -19,6 +19,7 @@ $remain_after_exit = undef, $type = undef, $env_vars = [], + $unset_env_vars = [], $environment_files = [], $permissions_start_only = undef, $timeoutstartsec = undef, @@ -79,6 +80,20 @@ # validate_re($restart, [ '^no$', '^on-success$', '^on-failure$', '^on-abnormal$', '^on-watchdog$', '^on-abort$', '^always$'], "Not a supported restart type: ${restart} - Takes one of no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always") # } + # TODO: puppet4 / puppet 6 compatibility + # if(size($unset_env_vars)>0) + # { + # if(defined($::eyp_systemd_release)) + # { + # $systemd_release=0+$::eyp_systemd_release + # + # if($systemd_release < 235) + # { + # fail("ERROR: UnsetEnvironment is not available for systemd < 235 - current release: ${systemd_release}") + # } + # } + # } + if versioncmp($::puppetversion, '4.0.0') >= 0 { contain ::systemd diff --git a/manifests/tmpfile.pp b/manifests/tmpfile.pp new file mode 100644 index 0000000..9f459c8 --- /dev/null +++ b/manifests/tmpfile.pp @@ -0,0 +1,2 @@ +# TODO: +# https://manpages.debian.org/stretch/systemd/tmpfiles.d.5.en.html diff --git a/metadata.json b/metadata.json index 674b475..1357367 100644 --- a/metadata.json +++ b/metadata.json @@ -1,6 +1,6 @@ { "name": "eyp-systemd", - "version": "0.2.11", + "version": "0.2.12", "author": "eyp", "summary": "management of systemd services, services dropins, sockets, timers, mounts, timesyncd, journald, logind and resolved", "license": "Apache-2.0", diff --git a/templates/section/service.erb b/templates/section/service.erb index 44ee68c..959d4b2 100644 --- a/templates/section/service.erb +++ b/templates/section/service.erb @@ -106,6 +106,11 @@ Type=<%= @type %> Environment=<%= env %> <%- end -%> <% end -%> +<% if @unset_env_vars.any? -%> + <%- @unset_env_vars.each do |env| -%> +UnsetEnvironment=<%= env %> + <%- end -%> +<% end -%> <% if @environment_files.any? -%> <%- @environment_files.each do |env_file| -%> EnvironmentFile=<%= env_file %>