02_instance.ymlΒΆ

---
- 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"