diff --git a/manifests/server/config.pp b/manifests/server/config.pp index 898529e01d..038e1c5de7 100644 --- a/manifests/server/config.pp +++ b/manifests/server/config.pp @@ -216,25 +216,18 @@ # RHEL 7 and 8 both support drop-in files for systemd units. The old include directive is deprecated and may be removed in future systemd releases. # Gentoo also supports drop-in files. if $facts['os']['family'] in ['RedHat', 'Gentoo'] and $facts['service_provider'] == 'systemd' { - # Template uses: - # - $facts['os']['name'] - # - $facts['os']['release']['major'] - # - $service_name - # - $port - # - $datadir - # - @extra_systemd_config - - if (versioncmp($facts['puppetversion'], '6.1.0') < 0) { - exec { 'restart-systemd': - command => 'systemctl daemon-reload', - refreshonly => true, - path => '/bin:/usr/bin:/usr/local/bin', - before => Class['postgresql::server::service'], - } - $systemd_notify = [Exec['restart-systemd'], Class['postgresql::server::service']] - } - else { - $systemd_notify = Class['postgresql::server::service'] + # While Puppet 6.1 and newer can do a daemon-reload if needed, systemd + # doesn't appear to report that correctly in all cases. + # One such case seems to be when an overriding unit file is removed from /etc + # and the original one from /lib *should* be used again. + # + # This can be removed when Puppet < 6.1 support is dropped *and* the file + # old-systemd-override is removed. + exec { 'restart-systemd': + command => 'systemctl daemon-reload', + refreshonly => true, + path => '/bin:/usr/bin:/usr/local/bin', + before => Class['postgresql::server::service'], } file { @@ -242,9 +235,8 @@ ensure => file, owner => root, group => root, - notify => $systemd_notify, + notify => [Exec['restart-systemd'], Class['postgresql::server::service']], before => Class['postgresql::server::reload'], - ; 'systemd-conf-dir': @@ -252,6 +244,13 @@ path => "/etc/systemd/system/${service_name}.service.d", ; + # Template uses: + # - $facts['os']['name'] + # - $facts['os']['release']['major'] + # - $service_name + # - $port + # - $datadir + # - $extra_systemd_config 'systemd-override': path => "/etc/systemd/system/${service_name}.service.d/${service_name}.conf", content => template('postgresql/systemd-override.erb'),