Skip to content

Commit b1ddd7b

Browse files
author
Michael Watters
committed
Change - Use systemd drop-in directory for override settings
The .include directive has been deprecated and support for it may be removed in a future systemd release. Drop-in directories are supported on all current RedHat, Fedora, and Gentoo releases. This branch contains changes to support this feature and disables the old behavior of using Include directives on RedHat based nodes.
1 parent 711a729 commit b1ddd7b

File tree

4 files changed

+254
-130
lines changed

4 files changed

+254
-130
lines changed

manifests/server/config.pp

+39-37
Original file line numberDiff line numberDiff line change
@@ -205,48 +205,50 @@
205205
}
206206
}
207207

208-
if $facts['os']['family'] == 'RedHat' {
209-
if $facts['os']['release']['full'] =~ /^7|^8/ or $facts['os']['name'] == 'Fedora' {
208+
# 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.
209+
# Gentoo also supports drop-in files.
210+
if $facts['os']['family'] in ['RedHat', 'Gentoo'] and $facts['service_provider'] == 'systemd' {
210211
# Template uses:
211-
# - $::operatingsystem
212+
# - $facts['os']['name']
213+
# - $facts['os']['release']['major']
212214
# - $service_name
213215
# - $port
214216
# - $datadir
215-
file { 'systemd-override':
216-
ensure => file,
217-
path => "/etc/systemd/system/${service_name}.service",
218-
owner => root,
219-
group => root,
220-
content => template('postgresql/systemd-override.erb'),
221-
notify => [Exec['restart-systemd'], Class['postgresql::server::service']],
222-
before => Class['postgresql::server::reload'],
223-
}
224-
exec { 'restart-systemd':
225-
command => 'systemctl daemon-reload',
226-
refreshonly => true,
227-
path => '/bin:/usr/bin:/usr/local/bin',
228-
}
217+
# - @extra_systemd_config
218+
219+
if (versioncmp($facts['puppetversion'], '5.0.0') <= 0) {
220+
$systemd_notify = [Exec['restart-systemd'], Class['postgresql::server::service']]
229221
}
230-
}
231-
elsif $facts['os']['family'] == 'Gentoo' {
232-
# Template uses:
233-
# - $::operatingsystem
234-
# - $service_name
235-
# - $port
236-
# - $datadir
237-
file { 'systemd-override':
238-
ensure => file,
239-
path => "/etc/systemd/system/${service_name}.service",
240-
owner => root,
241-
group => root,
242-
content => template('postgresql/systemd-override.erb'),
243-
notify => [Exec['restart-systemd'], Class['postgresql::server::service']],
244-
before => Class['postgresql::server::reload'],
245-
}
246-
exec { 'restart-systemd':
247-
command => 'systemctl daemon-reload',
248-
refreshonly => true,
249-
path => '/bin:/usr/bin:/usr/local/bin',
222+
else {
223+
$systemd_notify = Class['postgresql::server::service']
224+
}
225+
226+
file {
227+
default:
228+
ensure => file,
229+
owner => root,
230+
group => root,
231+
notify => $systemd_notify,
232+
before => Class['postgresql::server::reload'],
233+
234+
;
235+
236+
'systemd-conf-dir':
237+
ensure => directory,
238+
path => "/etc/systemd/system/${service_name}.service.d",
239+
;
240+
241+
'systemd-override':
242+
path => "/etc/systemd/system/${service_name}.service.d/${service_name}.conf",
243+
content => template('postgresql/systemd-override.erb'),
244+
require => File['systemd-conf-dir'],
245+
;
246+
247+
# Remove old unit file to avoid conflicts
248+
'old-systemd-override':
249+
ensure => absent,
250+
path => "/etc/systemd/system/${service_name}.service",
251+
;
250252
}
251253
}
252254
}

0 commit comments

Comments
 (0)