Skip to content

Commit efdd359

Browse files
authored
Merge pull request #1201 from blackknight36/use_systemd_conf_dir
Change - Use systemd drop-in directory for unit overrides
2 parents 62f9d07 + 4f976e6 commit efdd359

File tree

4 files changed

+251
-125
lines changed

4 files changed

+251
-125
lines changed

manifests/server/config.pp

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -206,48 +206,55 @@
206206
}
207207
}
208208

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

0 commit comments

Comments
 (0)