From 4d7737abb2ddcaa7acbf65a442b54d2d4f50bb44 Mon Sep 17 00:00:00 2001 From: akumari Date: Wed, 15 Oct 2025 09:42:07 +0530 Subject: [PATCH] Add quadlet timer for foreman recurring task (reports:daily) This is for the prototype implementation of recurring task support in foremanctl using quadlet-based systemd timers --- src/roles/foreman/tasks/main.yaml | 25 +++++++++++++++++++ .../foreman-reports-daily.container.j2 | 14 +++++++++++ .../templates/foreman-reports-daily.timer.j2 | 9 +++++++ 3 files changed, 48 insertions(+) create mode 100644 src/roles/foreman/templates/foreman-reports-daily.container.j2 create mode 100644 src/roles/foreman/templates/foreman-reports-daily.timer.j2 diff --git a/src/roles/foreman/tasks/main.yaml b/src/roles/foreman/tasks/main.yaml index 15515b7d..10bae51c 100644 --- a/src/roles/foreman/tasks/main.yaml +++ b/src/roles/foreman/tasks/main.yaml @@ -199,3 +199,28 @@ username: "{{ foreman_initial_admin_username }}" password: "{{ foreman_initial_admin_password }}" validate_certs: false + +- name: Deploy Quadlet container and timer for Foreman reports:daily + # when: foreman_recurring_tasks_enabled | default(true) + block: + - name: Create Quadlet container definitions + ansible.builtin.template: + src: foreman-recurring-daily.container.j2 + dest: "/etc/containers/systemd/foreman-reports-daily.container" + mode: "0644" + + - name: Create Quadlet timer definitions + ansible.builtin.template: + src: foreman-recurring-daily.timer.j2 + dest: "/etc/containers/systemd/foreman-reports-daily.timer" + mode: "0644" + + - name: Reload systemd to register new Quadlet units + ansible.builtin.systemd: + daemon_reload: true + + - name: Enable and start Foreman reports:daily timer + ansible.builtin.systemd: + name: "foreman-reports-daily.timer" + enabled: true + state: started diff --git a/src/roles/foreman/templates/foreman-reports-daily.container.j2 b/src/roles/foreman/templates/foreman-reports-daily.container.j2 new file mode 100644 index 00000000..21011f46 --- /dev/null +++ b/src/roles/foreman/templates/foreman-reports-daily.container.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=Foreman recurring task: reports:daily + +[Container] +Image={{ foreman_container_image }}:{{ foreman_container_tag }} +Exec=foreman-rake reports:daily +User=foreman +WorkingDir=/usr/share/foreman +Volume=/etc/foreman:/etc/foreman:ro +Volume=/var/lib/foreman:/var/lib/foreman +Network=host + +[Install] +WantedBy=multi-user.target diff --git a/src/roles/foreman/templates/foreman-reports-daily.timer.j2 b/src/roles/foreman/templates/foreman-reports-daily.timer.j2 new file mode 100644 index 00000000..48bbfe56 --- /dev/null +++ b/src/roles/foreman/templates/foreman-reports-daily.timer.j2 @@ -0,0 +1,9 @@ +[Unit] +Description=Timer for Foreman reports:daily task + +[Timer] +OnCalendar=daily +Persistent=true + +[Install] +WantedBy=timers.target