From 991d4222c095b20d896866c39b877ea1290cb017 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 27 Feb 2024 00:08:27 -0500 Subject: convert the custom cron::job class to systemd --- modules/cron/manifests/init.pp | 25 ++++++++++------------ modules/cron/manifests/job.pp | 25 +++++++++++++++++++--- modules/cron/templates/aliases | 1 - modules/cron/templates/job | 3 --- modules/cron/templates/msmtprc | 13 ------------ modules/cron/templates/service | 3 +++ modules/cron/templates/timer | 6 ++++++ modules/systemd/manifests/override.pp | 40 ++++++++++++++++++++++++----------- 8 files changed, 70 insertions(+), 46 deletions(-) delete mode 100644 modules/cron/templates/aliases delete mode 100644 modules/cron/templates/job delete mode 100644 modules/cron/templates/msmtprc create mode 100644 modules/cron/templates/service create mode 100644 modules/cron/templates/timer diff --git a/modules/cron/manifests/init.pp b/modules/cron/manifests/init.pp index b1fd335..cbbcc91 100644 --- a/modules/cron/manifests/init.pp +++ b/modules/cron/manifests/init.pp @@ -1,30 +1,27 @@ class cron { - $from = "${facts['networking']['hostname']}-cron" - $password = secret::value('cron_email_password') + file { + '/etc/cronjobs': + ensure => directory, + recurse => true, + purge => true; + } package { ["cronie", "msmtp"]: - ensure => installed, + ensure => absent; } file { '/etc/msmtprc': - content => template('cron/msmtprc'); + ensure => absent; '/etc/aliases': - content => template('cron/aliases'); - "/etc/cronjobs": - ensure => directory, - recurse => true, - purge => true; + ensure => absent; } systemd::override { "cronie": - source => 'puppet:///modules/cron/override.conf'; + ensure => absent; } service { 'cronie': - ensure => running, - enable => true, - subscribe => Systemd::Override['cronie'], - require => Package['cronie']; + ensure => absent; } } diff --git a/modules/cron/manifests/job.pp b/modules/cron/manifests/job.pp index 67e7412..5471547 100644 --- a/modules/cron/manifests/job.pp +++ b/modules/cron/manifests/job.pp @@ -1,6 +1,7 @@ define cron::job($frequency, $source = undef, $content = undef, $ensure = undef) { require cron require godwrap + require systemd $godwrap_directory = $godwrap::directory; @@ -11,10 +12,28 @@ define cron::job($frequency, $source = undef, $content = undef, $ensure = undef) content => $content, mode => '0755', require => File["/etc/cronjobs"]; - "/etc/cron.${frequency}/${name}": + "/etc/systemd/system/${name}.service": + ensure => $ensure, + content => template('cron/service'), + mode => '0755', + require => File["/etc/cronjobs/${name}"], + notify => Exec['/usr/bin/systemctl daemon-reload']; + "/etc/systemd/system/${name}.timer": ensure => $ensure, - content => template('cron/job'), + content => template('cron/timer'), mode => '0755', - require => File["/etc/cronjobs/${name}"]; + require => File["/etc/cronjobs/${name}"], + notify => Exec['/usr/bin/systemctl daemon-reload']; + "/etc/cron.${frequency}/${name}": + ensure => absent; + } + + service { "${name}.timer": + ensure => running, + enable => true, + require => [ + File["/etc/systemd/system/${name}.service"], + File["/etc/systemd/system/${name}.timer"], + ]; } } diff --git a/modules/cron/templates/aliases b/modules/cron/templates/aliases deleted file mode 100644 index 80a099d..0000000 --- a/modules/cron/templates/aliases +++ /dev/null @@ -1 +0,0 @@ -default: doy@tozt.net diff --git a/modules/cron/templates/job b/modules/cron/templates/job deleted file mode 100644 index 7cd6655..0000000 --- a/modules/cron/templates/job +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exec godwrap run --name <%= @name %> --status <%= @godwrap_directory %> --mode 0644 -- /etc/cronjobs/<%= @name %> diff --git a/modules/cron/templates/msmtprc b/modules/cron/templates/msmtprc deleted file mode 100644 index a13676d..0000000 --- a/modules/cron/templates/msmtprc +++ /dev/null @@ -1,13 +0,0 @@ -defaults -auth on -tls on -tls_starttls off - -account default -host mail.tozt.net -from <%= @from %>@tozt.net -user <%= @from %>@tozt.net -password <%= @password %> -tls_trust_file /etc/ssl/certs/ca-certificates.crt - -aliases /etc/aliases diff --git a/modules/cron/templates/service b/modules/cron/templates/service new file mode 100644 index 0000000..6f674f6 --- /dev/null +++ b/modules/cron/templates/service @@ -0,0 +1,3 @@ +[Service] +Type=oneshot +ExecStart=godwrap run --name <%= @name %> --status <%= @godwrap_directory %> --mode 0644 -- /etc/cronjobs/<%= @name %> diff --git a/modules/cron/templates/timer b/modules/cron/templates/timer new file mode 100644 index 0000000..3a22a79 --- /dev/null +++ b/modules/cron/templates/timer @@ -0,0 +1,6 @@ +[Timer] +OnCalendar=<%= @frequency %> +Persistent=True + +[Install] +WantedBy=timers.target diff --git a/modules/systemd/manifests/override.pp b/modules/systemd/manifests/override.pp index c605382..2128374 100644 --- a/modules/systemd/manifests/override.pp +++ b/modules/systemd/manifests/override.pp @@ -1,16 +1,32 @@ -define systemd::override($source = undef, $content = undef) { +define systemd::override($source = undef, $content = undef, $ensure = undef) { include systemd - file { - "/etc/systemd/system/${name}.service.d": - ensure => directory; - "/etc/systemd/system/${name}.service.d/override.conf": - source => $source, - content => $content, - notify => [ - Exec['/usr/bin/systemctl daemon-reload'], - Service["${name}"] - ], - require => File["/etc/systemd/system/${name}.service.d"]; + case $ensure { + 'absent': { + file { + "/etc/systemd/system/${name}.service.d": + ensure => absent; + "/etc/systemd/system/${name}.service.d/override.conf": + ensure => absent, + notify => [ + Exec['/usr/bin/systemctl daemon-reload'], + Service["${name}"] + ]; + } + } + default: { + file { + "/etc/systemd/system/${name}.service.d": + ensure => directory; + "/etc/systemd/system/${name}.service.d/override.conf": + source => $source, + content => $content, + notify => [ + Exec['/usr/bin/systemctl daemon-reload'], + Service["${name}"] + ], + require => File["/etc/systemd/system/${name}.service.d"]; + } + } } } -- cgit v1.2.3-54-g00ecf