GRM-20: fix molecule idempotence with mode-specific systemd templates
This commit is contained in:
@@ -6,6 +6,6 @@
|
||||
|
||||
- name: Restart gitea-runner
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@{{ runner_name }}"
|
||||
name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}"
|
||||
state: restarted
|
||||
when: ansible_facts is defined and ansible_facts['service_mgr'] | default('') == 'systemd'
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
- name: Load role defaults
|
||||
ansible.builtin.include_vars:
|
||||
dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults"
|
||||
- name: Override runner mode for binary scenario
|
||||
ansible.builtin.set_fact:
|
||||
runner_mode: "binary"
|
||||
tasks:
|
||||
- name: Check gitea_runner binary exists
|
||||
ansible.builtin.stat:
|
||||
@@ -26,7 +29,7 @@
|
||||
|
||||
- name: Check systemd template unit exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner@.service"
|
||||
path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service"
|
||||
register: service_stat
|
||||
|
||||
- name: Assert template unit exists
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
- name: Check systemd template unit exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner@.service"
|
||||
path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service"
|
||||
register: service_stat
|
||||
|
||||
- name: Assert template unit exists
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
- name: Check systemd template still exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner@.service"
|
||||
path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service"
|
||||
register: service_stat
|
||||
|
||||
- name: Assert systemd template still exists after deregister
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
tasks:
|
||||
- name: Stop gitea-runner systemd instance
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@{{ runner_name }}"
|
||||
name: "gitea-runner-docker@{{ 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 }}"
|
||||
name: "gitea-runner-docker@{{ runner_name }}"
|
||||
enabled: false
|
||||
daemon_reload: true
|
||||
when: systemd_available.stat.exists
|
||||
@@ -37,14 +37,14 @@
|
||||
tasks:
|
||||
- name: Enable gitea-runner systemd instance
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@{{ runner_name }}"
|
||||
name: "gitea-runner-docker@{{ 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 }}"
|
||||
name: "gitea-runner-docker@{{ runner_name }}"
|
||||
state: started
|
||||
daemon_reload: true
|
||||
when: systemd_available.stat.exists
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
tasks:
|
||||
- name: Check systemd template unit exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner@.service"
|
||||
path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service"
|
||||
register: template_stat
|
||||
|
||||
- name: Assert template unit exists
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
- name: Check instance is enabled
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@lifecycle-test-runner"
|
||||
name: "gitea-runner-{{ runner_mode | default('docker') }}@lifecycle-test-runner"
|
||||
register: service_status
|
||||
when: systemd_available.stat.exists
|
||||
|
||||
|
||||
@@ -6,10 +6,13 @@
|
||||
- name: Load role defaults
|
||||
ansible.builtin.include_vars:
|
||||
dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults"
|
||||
- name: Override runner mode for multi-instance scenario
|
||||
ansible.builtin.set_fact:
|
||||
runner_mode: "binary"
|
||||
tasks:
|
||||
- name: Check systemd template unit exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner@.service"
|
||||
path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service"
|
||||
register: template_stat
|
||||
|
||||
- name: Assert template unit exists
|
||||
|
||||
@@ -7,9 +7,20 @@
|
||||
ansible.builtin.include_vars:
|
||||
dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults"
|
||||
tasks:
|
||||
- name: Check Docker mode systemd template exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner-docker@.service"
|
||||
register: docker_template_stat
|
||||
|
||||
- name: Assert Docker mode systemd template exists
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- docker_template_stat.stat.exists
|
||||
fail_msg: "Docker systemd template is missing"
|
||||
|
||||
- name: Read rendered Docker systemd template
|
||||
ansible.builtin.slurp:
|
||||
src: "/etc/systemd/system/gitea-runner@.service"
|
||||
src: "/etc/systemd/system/gitea-runner-docker@.service"
|
||||
register: docker_template
|
||||
|
||||
- name: Assert Docker mode template contains expected directives
|
||||
@@ -23,6 +34,30 @@
|
||||
- "'Restart=on-failure' in docker_template.content | b64decode"
|
||||
fail_msg: "Docker systemd template is missing expected directives"
|
||||
|
||||
- name: Check Binary mode systemd template exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner-binary@.service"
|
||||
register: binary_template_stat
|
||||
|
||||
- name: Assert Binary mode systemd template exists
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- binary_template_stat.stat.exists
|
||||
fail_msg: "Binary systemd template is missing"
|
||||
|
||||
- name: Read rendered Binary systemd template
|
||||
ansible.builtin.slurp:
|
||||
src: "/etc/systemd/system/gitea-runner-binary@.service"
|
||||
register: binary_template
|
||||
|
||||
- name: Assert Binary mode template contains expected directives
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'Type=simple' in binary_template.content | b64decode"
|
||||
- "'ExecStart={{ gitea_runner_binary_path }}' in binary_template.content | b64decode"
|
||||
- "'Restart=on-failure' in binary_template.content | b64decode"
|
||||
fail_msg: "Binary systemd template is missing expected directives"
|
||||
|
||||
- name: Read rendered prune service template
|
||||
ansible.builtin.slurp:
|
||||
src: "/etc/systemd/system/docker-prune.service"
|
||||
|
||||
@@ -29,16 +29,27 @@
|
||||
- binary_stat.stat.exists
|
||||
fail_msg: "Binary runner executable missing after update"
|
||||
|
||||
- name: Check systemd template still exists
|
||||
- name: Check Docker mode systemd template still exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner@.service"
|
||||
register: service_stat
|
||||
path: "/etc/systemd/system/gitea-runner-docker@.service"
|
||||
register: docker_service_stat
|
||||
|
||||
- name: Assert systemd template still exists after update
|
||||
- name: Assert Docker mode systemd template still exists after update
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- service_stat.stat.exists
|
||||
fail_msg: "Systemd template unit missing after update"
|
||||
- docker_service_stat.stat.exists
|
||||
fail_msg: "Docker mode systemd template missing after update"
|
||||
|
||||
- name: Check Binary mode systemd template still exists
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/systemd/system/gitea-runner-binary@.service"
|
||||
register: binary_service_stat
|
||||
|
||||
- name: Assert Binary mode systemd template still exists after update
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- binary_service_stat.stat.exists
|
||||
fail_msg: "Binary mode systemd template missing after update"
|
||||
|
||||
- name: Check Docker mode data directory still exists
|
||||
ansible.builtin.stat:
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
- name: Restart gitea-runner systemd instance
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@{{ runner_name }}"
|
||||
name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}"
|
||||
state: restarted
|
||||
daemon_reload: true
|
||||
when: systemd_available is defined and systemd_available.stat is defined and systemd_available.stat.exists
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
- name: Restart gitea-runner systemd instance
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@{{ runner_name }}"
|
||||
name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}"
|
||||
state: restarted
|
||||
daemon_reload: true
|
||||
when: systemd_available.stat.exists
|
||||
when: systemd_available is defined and systemd_available.stat is defined and systemd_available.stat.exists
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
- name: Verify runner service active (Binary mode)
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@{{ runner_name }}"
|
||||
name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}"
|
||||
state: started
|
||||
register: service_check
|
||||
when: runner_mode == 'binary'
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
- name: Create systemd template service file
|
||||
ansible.builtin.template:
|
||||
src: gitea-runner@.service.j2
|
||||
dest: "/etc/systemd/system/gitea-runner@.service"
|
||||
dest: "/etc/systemd/system/gitea-runner-{{ runner_mode }}@.service"
|
||||
mode: "0644"
|
||||
notify:
|
||||
- Reload systemd
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
- name: Enable and start gitea-runner instance
|
||||
ansible.builtin.systemd:
|
||||
name: "gitea-runner@{{ runner_name }}"
|
||||
name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}"
|
||||
state: started
|
||||
enabled: true
|
||||
daemon_reload: true
|
||||
|
||||
Reference in New Issue
Block a user