---
- name: π Create runner instance {{ runner_instance }} directory
file:
path: "{{ RUNNER_INSTALL_DIR }}/{{ runner_instance }}"
state: directory
owner: "{{ RUNNER_USER }}"
group: "{{ RUNNER_USER }}"
mode: "0755"
- name: π Check runner binary installed for instance {{ runner_instance }}
ansible.builtin.stat:
path: "{{ RUNNER_INSTALL_DIR }}/{{ runner_instance }}/run.sh"
register: _runner_binary_stat
- name: π¦ Extract runner archive for instance {{ runner_instance }}
unarchive: # nocheck: stack-host-consumer (node-local runner: every node extracts its own run.sh)
src: "{{ RUNNER_INSTALL_DIR }}/actions-runner.tar.gz"
dest: "{{ RUNNER_INSTALL_DIR }}/{{ runner_instance }}"
remote_src: true
owner: "{{ RUNNER_USER }}"
group: "{{ RUNNER_USER }}"
when: not _runner_binary_stat.stat.exists
- name: π Find runner configuration for instance {{ runner_instance }}
ansible.builtin.find:
paths: "{{ RUNNER_INSTALL_DIR }}/{{ runner_instance }}"
patterns: ".*"
hidden: true
file_type: file
depth: 1
register: _runner_config_files
- name: ποΈ Delete stale runner config files for instance {{ runner_instance }}
ansible.builtin.file:
path: "{{ item.path }}"
state: absent
loop: "{{ _runner_config_files.files }}"
loop_control:
label: "{{ item.path }}"
when: item.path | basename not in ['.env']
- name: π Write runner environment file for instance {{ runner_instance }}
template: # nocheck: stack-host-template (node-local runner: each node registers its own instances)
src: runner_instance_env.j2
dest: "{{ RUNNER_INSTALL_DIR }}/{{ runner_instance }}/.env"
owner: "{{ RUNNER_USER }}"
group: "{{ RUNNER_USER }}"
mode: "0600"