Homelab/ansible/playbooks/runner.yml

81 lines
2.6 KiB
YAML
Raw Normal View History

2026-04-30 10:07:23 +00:00
# =============================================================================
# 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/<inventaire>/ \
# --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
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]