summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2024-02-27 00:08:27 -0500
committerJesse Luehrs <doy@tozt.net>2024-02-27 00:08:27 -0500
commit991d4222c095b20d896866c39b877ea1290cb017 (patch)
tree251479529d4036de5c4ebf449e1320105767dacb
parent528974eb4b1b9316d2d6082771466c42b562c163 (diff)
downloadpuppet-tozt-991d4222c095b20d896866c39b877ea1290cb017.tar.gz
puppet-tozt-991d4222c095b20d896866c39b877ea1290cb017.zip
convert the custom cron::job class to systemd
-rw-r--r--modules/cron/manifests/init.pp25
-rw-r--r--modules/cron/manifests/job.pp25
-rw-r--r--modules/cron/templates/aliases1
-rw-r--r--modules/cron/templates/job3
-rw-r--r--modules/cron/templates/msmtprc13
-rw-r--r--modules/cron/templates/service3
-rw-r--r--modules/cron/templates/timer6
-rw-r--r--modules/systemd/manifests/override.pp40
8 files changed, 70 insertions, 46 deletions
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"];
+ }
+ }
}
}