# ============================================================================= # Playbook : runner.yml # Description: Deploiement du Forgejo Actions Runner (vm-runner) # Registration automatique si premiere installation, # puis demarrage du daemon en container Docker. # # Usage : # ansible-playbook playbooks/runner.yml \ # -i inventories// \ # --ask-vault-pass # # Prerequis : # - Docker installe (playbook docker.yml execute avant) # - Token runner genere dans Forgejo : Admin > Actions > Runners # - vault_forgejo_runner_token defini dans le vault # - vault_forgejo_domain defini dans le vault # # Exemple : # ansible-playbook playbooks/runner.yml \ # -i inventories/homelab/ \ # --ask-vault-pass \ # --tags runner # ============================================================================= --- - name: Deploiement Forgejo Actions Runner hosts: runner become: true tasks: - name: Creation des repertoires runner ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ admin_user }}" group: "{{ admin_user }}" mode: "0755" loop: - /opt/runner - /opt/runner/data tags: [runner] - name: Deploiement docker-compose runner ansible.builtin.copy: src: ../../docker/runner/docker-compose.yml dest: /opt/runner/docker-compose.yml owner: "{{ admin_user }}" group: "{{ admin_user }}" mode: "0644" tags: [runner] - name: Verification fichier de registration ansible.builtin.stat: path: /opt/runner/data/.runner register: runner_config tags: [runner] # La registration est une operation unique : elle cree /opt/runner/data/.runner # Ce fichier contient les credentials du runner, il ne faut pas la rejouer - name: Registration du runner (premiere fois uniquement) community.docker.docker_container: name: forgejo-runner-register image: code.forgejo.org/forgejo/runner:6 auto_remove: true working_dir: /data user: "0:0" volumes: - /opt/runner/data:/data command: > forgejo-runner register --no-interactive --instance "https://{{ vault_forgejo_domain }}" --token "{{ vault_forgejo_runner_token }}" --name "vm-runner" --labels "ubuntu-latest:docker://ubuntu:22.04,self-hosted:host" when: not runner_config.stat.exists tags: [runner] - name: Demarrage du runner community.docker.docker_compose_v2: project_src: /opt/runner state: present tags: [runner]