From 85cc374bae3b67cc29641800f77e20b8560942a7 Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Sat, 15 Jun 2024 20:05:15 +0200 Subject: [PATCH] containers/forgejo-runner: allow defining multiple runners XXX: this breaks the old config syntax --- roles/containers/forgejo-runner/README.org | 9 ++++-- .../forgejo-runner/defaults/main.yml | 7 ++-- .../containers/forgejo-runner/tasks/setup.yml | 32 ++++++++++++++----- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/roles/containers/forgejo-runner/README.org b/roles/containers/forgejo-runner/README.org index 9a4d6e7..6c9131d 100644 --- a/roles/containers/forgejo-runner/README.org +++ b/roles/containers/forgejo-runner/README.org @@ -6,7 +6,10 @@ you probably want to set/edit the following variables in your ~secret.yml~ (or your unencrypted config): #+begin_src yaml forgejo_runner_project_dir: "forgejo-runner" -forgejo_runner_token: "changeme" -forgejo_runner_name: "runner" -forgejo_runner_instance: "https://codeberg.org/" +forgejo_runner_list: + default: + token: "changeme" + instance: "https://codeberg.org" #+end_src + +You can define more runners, by choosing an id and setting the `token` and `instance` key for it. diff --git a/roles/containers/forgejo-runner/defaults/main.yml b/roles/containers/forgejo-runner/defaults/main.yml index a84d6ea..641f4a8 100644 --- a/roles/containers/forgejo-runner/defaults/main.yml +++ b/roles/containers/forgejo-runner/defaults/main.yml @@ -1,5 +1,6 @@ --- forgejo_runner_project_dir: "forgejo-runner" -forgejo_runner_token: "changeme" -forgejo_runner_name: "runner" -forgejo_runner_instance: "https://codeberg.org/" +forgejo_runner_list: + default: + token: "changeme" + instance: "https://codeberg.org" diff --git a/roles/containers/forgejo-runner/tasks/setup.yml b/roles/containers/forgejo-runner/tasks/setup.yml index 059e43e..acc210e 100644 --- a/roles/containers/forgejo-runner/tasks/setup.yml +++ b/roles/containers/forgejo-runner/tasks/setup.yml @@ -5,27 +5,43 @@ state: directory recurse: true +- name: Ensure the subdirectories for each runner exist + ansible.builtin.file: + path: "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.key }}" + state: directory + recurse: true + loop: "{{ forgejo_runner_list | dict2items }}" + +- name: Check if we have already generated config files for the runners + ansible.builtin.stat: + path: "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.key }}/.runner" + loop: "{{ forgejo_runner_list | dict2items }}" + register: list + - name: Create forgejo-runner registration community.docker.docker_container: - name: forgejo-runner-bootstrap + name: "forgejo-runner-{{ item.item.key }}-bootstrap" image: code.forgejo.org/forgejo/runner:2.3.0 working_dir: "/data" command: "register \ --no-interactive \ - --token {{ forgejo_runner_token }} \ - --name {{ forgejo_runner_name }} \ - --instance {{ forgejo_runner_instance }} + --token {{ item.item.value.token }} \ + --name {{ item.item.key }} \ + --instance {{ item.item.value.instance }} --labels docker" volumes: - - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/:/data" + - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.item.key }}/:/data" + when: not item.stat.exists + loop: "{{ list.results }}" -- name: Setup forgejo-runner +- name: Start forgejo-runners community.docker.docker_container: - name: forgejo-runner + name: "forgejo-runner-{{ item.key }}" image: code.forgejo.org/forgejo/runner:2.3.0 working_dir: "/data" restart_policy: unless-stopped command: daemon volumes: - - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/:/data" + - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.key }}:/data" - /var/run/docker.sock:/var/run/docker.sock + loop: "{{ forgejo_runner_list | dict2items }}" -- 2.38.5