Skip to content

Commit

Permalink
Merge pull request #221 from traylenator/hour_systemd
Browse files Browse the repository at this point in the history
Support hourly logrotate directory on EL9 again.
  • Loading branch information
treydock authored Feb 28, 2024
2 parents bbd72db + 71423d1 commit 442909d
Show file tree
Hide file tree
Showing 4 changed files with 134 additions and 44 deletions.
1 change: 1 addition & 0 deletions .fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ fixtures:
repositories:
stdlib: "https://github.com/puppetlabs/puppetlabs-stdlib.git"
cron: "https://github.com/puppetlabs/puppetlabs-cron_core.git"
systemd: "https://github.com/voxpupuli/puppet-systemd.git"
69 changes: 63 additions & 6 deletions manifests/hourly.pp
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,8 @@
) {
assert_private()

$dir_ensure = $logrotate::ensure_cron_hourly ? {
'absent' => $logrotate::ensure_cron_hourly,
'present' => 'directory'
}

file { "${logrotate::rules_configdir}/hourly":
ensure => $dir_ensure,
ensure => 'directory',
owner => $logrotate::root_user,
group => $logrotate::root_group,
mode => $logrotate::rules_configdir_mode,
Expand All @@ -38,4 +33,66 @@
require => File["${logrotate::rules_configdir}/hourly"],
}
}

# Make copies of the rpm provided unit and timers
if $logrotate::manage_systemd_timer {
$_lockfile = '/run/lock/logrotate.service'
$_timeout = 21600
systemd::manage_dropin { 'hourly-service.conf':
ensure => $logrotate::ensure_systemd_timer,
unit => 'logrotate-hourly.service',
unit_entry => {
'Description' => [
'',
'Extra service to run hourly logrotates only',
],
},
service_entry => {
'ExecStart' => ['', "/usr/bin/flock --wait ${_timeout} ${_lockfile} /usr/sbin/logrotate ${logrotate::rules_configdir}/hourly"],
},
before => Systemd::Unit_file['logrotate-hourly.service'],
}

# Once logrotate >= 3.21.1 replace flock with the `--wait-for-state-lock` option.
systemd::manage_dropin { 'logrotate-flock.conf':
ensure => $logrotate::ensure_systemd_timer,
unit => 'logrotate.service',
service_entry => {
'ExecStart' => ['', "/usr/bin/flock --wait ${_timeout} ${_lockfile} /usr/sbin/logrotate /etc/logrotate.conf"],
},
}

systemd::unit_file { 'logrotate-hourly.service':
ensure => $logrotate::ensure_systemd_timer,
source => 'file:///lib/systemd/system/logrotate.service',
before => Systemd::Unit_file['logrotate-hourly.timer'],
}

systemd::manage_dropin { 'hourly-timer.conf':
ensure => $logrotate::ensure_systemd_timer,
unit => 'logrotate-hourly.timer',
unit_entry => {
'Description' => [
'',
'Extra timer to run hourly logrotates only',
],
},
timer_entry => {
'OnCalendar' => ['', 'hourly'],
},
before => Systemd::Unit_file['logrotate-hourly.timer'],
}

$_timer = $logrotate::ensure_systemd_timer ? {
'present' => true,
default => false,
}

systemd::unit_file { 'logrotate-hourly.timer':
ensure => $logrotate::ensure_systemd_timer,
source => 'file:///lib/systemd/system/logrotate.timer',
active => $_timer,
enable => $_timer,
}
}
}
4 changes: 4 additions & 0 deletions metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
{
"name": "puppetlabs/stdlib",
"version_requirement": ">= 4.22.0 < 10.0.0"
},
{
"name": "puppet/systemd",
"version_requirement": ">= 6.3.0 < 7.0.0"
}
],
"requirements": [
Expand Down
104 changes: 66 additions & 38 deletions spec/classes/init_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,6 @@
let(:facts) do
facts
end
let(:cron_ensure) do
if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'].to_i >= 9
'absent'
else
'present'
end
end
let(:hourly_dir_ensure) do
if cron_ensure == 'present'
'directory'
else
'absent'
end
end

context 'logrotate class without any parameters' do
it { is_expected.to compile.with_all_deps }
Expand Down Expand Up @@ -54,23 +40,6 @@
is_expected.to contain_class('logrotate::defaults')
end
else
it do
is_expected.to contain_file('/etc/logrotate.d/hourly').with(
'ensure' => hourly_dir_ensure,
'owner' => 'root',
'group' => 'root',
'mode' => '0755'
)
end

it do
is_expected.to contain_file('/etc/cron.hourly/logrotate').with(
'ensure' => cron_ensure,
'owner' => 'root',
'group' => 'root',
'mode' => '0700'
)
end

it do
is_expected.to contain_package('logrotate').with_ensure('present')
Expand All @@ -80,11 +49,6 @@
'group' => 'root',
'mode' => '0755')

is_expected.to contain_file('/etc/cron.daily/logrotate').with('ensure' => cron_ensure,
'owner' => 'root',
'group' => 'root',
'mode' => '0700')

is_expected.to contain_class('logrotate::defaults')
end

Expand All @@ -94,10 +58,74 @@
'ensure' => 'running',
'enable' => true
)

is_expected.to contain_systemd__unit_file('logrotate-hourly.timer').with(
'ensure' => 'present',
'enable' => true,
'active' => true
)

is_expected.to contain_systemd__manage_dropin('hourly-timer.conf').with(
'ensure' => 'present',
'unit' => 'logrotate-hourly.timer'
)

is_expected.to contain_systemd__unit_file('logrotate-hourly.service').with_ensure('present').without_enable.without_active

is_expected.to contain_systemd__manage_dropin('hourly-service.conf').with(
'ensure' => 'present',
'unit' => 'logrotate-hourly.service',
'service_entry' => {
'ExecStart' => [
'',
'/usr/bin/flock --wait 21600 /run/lock/logrotate.service /usr/sbin/logrotate /etc/logrotate.d/hourly'
]
}
)

is_expected.to contain_systemd__manage_dropin('logrotate-flock.conf').with(
'ensure' => 'present',
'unit' => 'logrotate.service',
'service_entry' => {
'ExecStart' => [
'',
'/usr/bin/flock --wait 21600 /run/lock/logrotate.service /usr/sbin/logrotate /etc/logrotate.conf'
]
}
)
end
else

it do
is_expected.to contain_file('/etc/cron.hourly/logrotate').with(
'ensure' => 'present',
'owner' => 'root',
'group' => 'root',
'mode' => '0700'
)

is_expected.to contain_file('/etc/cron.daily/logrotate').with('ensure' => 'present',
'owner' => 'root',
'group' => 'root',
'mode' => '0700')
end

it do
is_expected.to contain_file('/etc/logrotate.d/hourly').with(
'ensure' => 'directory',
'owner' => 'root',
'group' => 'root',
'mode' => '0755'
)
end

it do
is_expected.not_to contain_service('logrotate.timer')
is_expected.not_to contain_systemd__unit_file('logrotate-hourly.timer')
is_expected.not_to contain_systemd__unit_file('logrotate-hourly.service')
is_expected.not_to contain_systemd__unit_file('logrotate-hourly.timer')
is_expected.not_to contain_systemd__unit_file('logrotate-hourly.service')
is_expected.not_to contain_systemd__manage_dropin('logrotate-flock.conf')
end
end
end
Expand Down Expand Up @@ -169,9 +197,9 @@

case facts[:operatingsystem]
when 'FreeBSD'
it { is_expected.to contain_file('/usr/local/etc/logrotate.d/hourly').with_ensure('absent') }
it { is_expected.to contain_file('/usr/local/etc/logrotate.d/hourly').with_ensure('directory') }
else
it { is_expected.to contain_file('/etc/logrotate.d/hourly').with_ensure('absent') }
it { is_expected.to contain_file('/etc/logrotate.d/hourly').with_ensure('directory') }
it { is_expected.to contain_file('/etc/cron.hourly/logrotate').with_ensure('absent') }
end
end
Expand Down

0 comments on commit 442909d

Please sign in to comment.