From d4766da5f9aa5334c5f578cc78944a46d8d28f4f Mon Sep 17 00:00:00 2001 From: Emil Simeonov Date: Fri, 19 Jun 2026 11:43:55 +0200 Subject: [PATCH] GRM-20: fix: skip systemd operations in lifecycle molecule when unavailable The lifecycle scenario runs in a Docker container without systemd as PID 1. The side_effect and verify playbooks used systemd module operations unconditionally, causing failures like: System has not been booted with systemd as init system Add a systemd availability check (/run/systemd/system stat) to both playbooks and conditionally skip systemd tasks when running in environments without systemd (e.g. Molecule Docker containers). --- .../molecule/lifecycle/side_effect.yml | 14 ++++++++++++++ .../gitea-runner/molecule/lifecycle/verify.yml | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml b/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml index 2c80fac..bb4be54 100644 --- a/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml +++ b/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml @@ -4,33 +4,47 @@ become: true vars: runner_name: "lifecycle-test-runner" + pre_tasks: + - name: Check if systemd is available + ansible.builtin.stat: + path: /run/systemd/system + register: systemd_available tasks: - name: Stop gitea-runner systemd instance ansible.builtin.systemd: name: "gitea-runner@{{ runner_name }}" state: stopped daemon_reload: true + when: systemd_available.stat.exists - name: Disable gitea-runner systemd instance ansible.builtin.systemd: name: "gitea-runner@{{ runner_name }}" enabled: false daemon_reload: true + when: systemd_available.stat.exists - name: Re-enable and start runner hosts: all become: true vars: runner_name: "lifecycle-test-runner" + pre_tasks: + - name: Check if systemd is available + ansible.builtin.stat: + path: /run/systemd/system + register: systemd_available tasks: - name: Enable gitea-runner systemd instance ansible.builtin.systemd: name: "gitea-runner@{{ runner_name }}" enabled: true daemon_reload: true + when: systemd_available.stat.exists - name: Start gitea-runner systemd instance ansible.builtin.systemd: name: "gitea-runner@{{ runner_name }}" state: started daemon_reload: true + when: systemd_available.stat.exists diff --git a/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml b/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml index 79e185f..80176dd 100644 --- a/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml +++ b/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml @@ -20,16 +20,23 @@ - template_stat.stat.exists fail_msg: "Systemd template unit is missing" + - name: Check if systemd is available + ansible.builtin.stat: + path: /run/systemd/system + register: systemd_available + - name: Check instance is enabled ansible.builtin.systemd: name: "gitea-runner@lifecycle-test-runner" register: service_status + when: systemd_available.stat.exists - name: Assert instance is enabled ansible.builtin.assert: that: - service_status.status.LoadState == 'loaded' fail_msg: "Systemd instance is not loaded" + when: systemd_available.stat.exists - name: Check instance data directory exists after lifecycle ansible.builtin.stat: