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:
@@ -4,33 +4,47 @@
|
|||||||
become: true
|
become: true
|
||||||
vars:
|
vars:
|
||||||
runner_name: "lifecycle-test-runner"
|
runner_name: "lifecycle-test-runner"
|
||||||
|
pre_tasks:
|
||||||
|
- name: Check if systemd is available
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: /run/systemd/system
|
||||||
|
register: systemd_available
|
||||||
tasks:
|
tasks:
|
||||||
- name: Stop gitea-runner systemd instance
|
- name: Stop gitea-runner systemd instance
|
||||||
ansible.builtin.systemd:
|
ansible.builtin.systemd:
|
||||||
name: "gitea-runner@{{ runner_name }}"
|
name: "gitea-runner@{{ runner_name }}"
|
||||||
state: stopped
|
state: stopped
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
when: systemd_available.stat.exists
|
||||||
|
|
||||||
- name: Disable gitea-runner systemd instance
|
- name: Disable gitea-runner systemd instance
|
||||||
ansible.builtin.systemd:
|
ansible.builtin.systemd:
|
||||||
name: "gitea-runner@{{ runner_name }}"
|
name: "gitea-runner@{{ runner_name }}"
|
||||||
enabled: false
|
enabled: false
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
when: systemd_available.stat.exists
|
||||||
|
|
||||||
- name: Re-enable and start runner
|
- name: Re-enable and start runner
|
||||||
hosts: all
|
hosts: all
|
||||||
become: true
|
become: true
|
||||||
vars:
|
vars:
|
||||||
runner_name: "lifecycle-test-runner"
|
runner_name: "lifecycle-test-runner"
|
||||||
|
pre_tasks:
|
||||||
|
- name: Check if systemd is available
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: /run/systemd/system
|
||||||
|
register: systemd_available
|
||||||
tasks:
|
tasks:
|
||||||
- name: Enable gitea-runner systemd instance
|
- name: Enable gitea-runner systemd instance
|
||||||
ansible.builtin.systemd:
|
ansible.builtin.systemd:
|
||||||
name: "gitea-runner@{{ runner_name }}"
|
name: "gitea-runner@{{ runner_name }}"
|
||||||
enabled: true
|
enabled: true
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
when: systemd_available.stat.exists
|
||||||
|
|
||||||
- name: Start gitea-runner systemd instance
|
- name: Start gitea-runner systemd instance
|
||||||
ansible.builtin.systemd:
|
ansible.builtin.systemd:
|
||||||
name: "gitea-runner@{{ runner_name }}"
|
name: "gitea-runner@{{ runner_name }}"
|
||||||
state: started
|
state: started
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
when: systemd_available.stat.exists
|
||||||
|
|||||||
@@ -20,16 +20,23 @@
|
|||||||
- template_stat.stat.exists
|
- template_stat.stat.exists
|
||||||
fail_msg: "Systemd template unit is missing"
|
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
|
- name: Check instance is enabled
|
||||||
ansible.builtin.systemd:
|
ansible.builtin.systemd:
|
||||||
name: "gitea-runner@lifecycle-test-runner"
|
name: "gitea-runner@lifecycle-test-runner"
|
||||||
register: service_status
|
register: service_status
|
||||||
|
when: systemd_available.stat.exists
|
||||||
|
|
||||||
- name: Assert instance is enabled
|
- name: Assert instance is enabled
|
||||||
ansible.builtin.assert:
|
ansible.builtin.assert:
|
||||||
that:
|
that:
|
||||||
- service_status.status.LoadState == 'loaded'
|
- service_status.status.LoadState == 'loaded'
|
||||||
fail_msg: "Systemd instance is not loaded"
|
fail_msg: "Systemd instance is not loaded"
|
||||||
|
when: systemd_available.stat.exists
|
||||||
|
|
||||||
- name: Check instance data directory exists after lifecycle
|
- name: Check instance data directory exists after lifecycle
|
||||||
ansible.builtin.stat:
|
ansible.builtin.stat:
|
||||||
|
|||||||
Reference in New Issue
Block a user