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).
This commit is contained in:
Emil Simeonov
2026-06-19 11:43:55 +02:00
parent c05d7c9c4f
commit d4766da5f9
2 changed files with 21 additions and 0 deletions
@@ -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
@@ -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: