68 lines
2.1 KiB
YAML
68 lines
2.1 KiB
YAML
|
|
---
|
||
|
|
# Installs + registers + services a single runner instance.
|
||
|
|
# Inputs: project_spec (dict), idx (int), project_token (str).
|
||
|
|
- name: Set per-runner facts
|
||
|
|
ansible.builtin.set_fact:
|
||
|
|
runner_name: "{{ inventory_hostname }}-{{ project_spec.project }}-{{ runner_env }}-{{ idx }}"
|
||
|
|
runner_dir: "{{ runner_home }}/actions-runner-{{ project_spec.project }}-{{ idx }}"
|
||
|
|
|
||
|
|
- name: "Create runner dir {{ runner_dir }}"
|
||
|
|
ansible.builtin.file:
|
||
|
|
path: "{{ runner_dir }}"
|
||
|
|
state: directory
|
||
|
|
owner: "{{ runner_user }}"
|
||
|
|
group: "{{ runner_user }}"
|
||
|
|
mode: "0755"
|
||
|
|
|
||
|
|
- name: Download runner tarball (sha256 verified)
|
||
|
|
ansible.builtin.get_url:
|
||
|
|
url: "{{ runner_download_url }}"
|
||
|
|
dest: "{{ runner_dir }}/{{ runner_tarball }}"
|
||
|
|
checksum: "sha256:{{ runner_sha256 }}"
|
||
|
|
owner: "{{ runner_user }}"
|
||
|
|
group: "{{ runner_user }}"
|
||
|
|
mode: "0644"
|
||
|
|
|
||
|
|
- name: Extract runner
|
||
|
|
ansible.builtin.unarchive:
|
||
|
|
src: "{{ runner_dir }}/{{ runner_tarball }}"
|
||
|
|
dest: "{{ runner_dir }}"
|
||
|
|
remote_src: true
|
||
|
|
owner: "{{ runner_user }}"
|
||
|
|
group: "{{ runner_user }}"
|
||
|
|
creates: "{{ runner_dir }}/config.sh"
|
||
|
|
|
||
|
|
- name: "Register runner {{ runner_name }}"
|
||
|
|
ansible.builtin.command:
|
||
|
|
cmd: >-
|
||
|
|
./config.sh --unattended
|
||
|
|
--url {{ project_spec.url }}
|
||
|
|
--token {{ project_token }}
|
||
|
|
--name {{ runner_name }}
|
||
|
|
--labels {{ project_spec.label }}
|
||
|
|
--work _work
|
||
|
|
--replace
|
||
|
|
chdir: "{{ runner_dir }}"
|
||
|
|
creates: "{{ runner_dir }}/.runner"
|
||
|
|
become_user: "{{ runner_user }}"
|
||
|
|
|
||
|
|
- name: "Check if service installed for {{ runner_name }}"
|
||
|
|
ansible.builtin.find:
|
||
|
|
paths: "{{ runner_dir }}"
|
||
|
|
patterns: ".service"
|
||
|
|
hidden: true
|
||
|
|
register: runner_svc_marker
|
||
|
|
|
||
|
|
- name: "Install systemd service for {{ runner_name }}"
|
||
|
|
ansible.builtin.command:
|
||
|
|
cmd: "./svc.sh install {{ runner_user }}"
|
||
|
|
chdir: "{{ runner_dir }}"
|
||
|
|
when: runner_svc_marker.matched == 0
|
||
|
|
|
||
|
|
- name: "Start + enable service for {{ runner_name }}"
|
||
|
|
ansible.builtin.command:
|
||
|
|
cmd: "./svc.sh start"
|
||
|
|
chdir: "{{ runner_dir }}"
|
||
|
|
register: svc_start
|
||
|
|
changed_when: "'active (running)' not in svc_start.stdout"
|