Switch to terraform

This commit is contained in:
Prox
2026-02-15 18:37:15 +02:00
commit a7062b43ab
70 changed files with 6063 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
---
# =============================================================================
# Gitea Actions Runner Configuration
# =============================================================================
# Gitea instance URL
gitea_url: "https://gitea-poc.networkmonitor.cc"
# Runner registration token (get from Gitea: Site Administration → Actions → Runners)
# This will be set via vault or command line
gitea_runner_token: "{{ vault_gitea_runner_token }}"
# Runner name
gitea_runner_name: "poc-runner"
# Runner labels (determines what jobs it can run)
gitea_runner_labels: "ubuntu-latest:docker://node:20-bookworm,ubuntu-22.04:docker://ubuntu:22.04"
# Installation directory
gitea_runner_dir: "/opt/gitea-runner"
# Runner version
gitea_runner_version: "0.2.11"

View File

@@ -0,0 +1,160 @@
---
# =============================================================================
# Gitea Actions Runner Deployment
# =============================================================================
# Deploys act_runner for Gitea Actions CI/CD.
#
# Prerequisites:
# 1. Gitea instance running with Actions enabled
# 2. Runner registration token from Gitea admin
#
# Get registration token:
# 1. Go to Gitea → Site Administration → Actions → Runners
# 2. Click "Create new runner"
# 3. Copy the registration token
#
# Usage:
# ansible-playbook -i poc-inventory.yml playbook.yml -e vault_gitea_runner_token=<TOKEN>
# =============================================================================
- name: Deploy Gitea Actions Runner
hosts: gitea_runner_servers
become: true
vars_files:
- group_vars/gitea_runner_servers.yml
pre_tasks:
- name: Validate runner token is provided
ansible.builtin.assert:
that:
- gitea_runner_token is defined
- gitea_runner_token | length > 0
fail_msg: |
Runner token not provided!
Get it from: {{ gitea_url }}/admin/actions/runners
Run with: -e vault_gitea_runner_token=<TOKEN>
tasks:
# =========================================================================
# Docker (required for container-based jobs)
# =========================================================================
- name: Check if Docker is installed
ansible.builtin.command: docker --version
register: docker_check
changed_when: false
failed_when: false
- name: Fail if Docker not installed
ansible.builtin.fail:
msg: "Docker is required. Run gitea or netbird playbook first to install Docker."
when: docker_check.rc != 0
# =========================================================================
# Create Runner Directory
# =========================================================================
- name: Create runner directory
ansible.builtin.file:
path: "{{ gitea_runner_dir }}"
state: directory
mode: "0755"
# =========================================================================
# Download act_runner
# =========================================================================
- name: Download act_runner binary
ansible.builtin.get_url:
url: "https://gitea.com/gitea/act_runner/releases/download/v{{ gitea_runner_version }}/act_runner-{{ gitea_runner_version }}-linux-amd64"
dest: "{{ gitea_runner_dir }}/act_runner"
mode: "0755"
# =========================================================================
# Register Runner
# =========================================================================
- name: Check if runner is already registered
ansible.builtin.stat:
path: "{{ gitea_runner_dir }}/.runner"
register: runner_config
- name: Register runner with Gitea
ansible.builtin.command:
cmd: >
{{ gitea_runner_dir }}/act_runner register
--instance {{ gitea_url }}
--token {{ gitea_runner_token }}
--name {{ gitea_runner_name }}
--labels {{ gitea_runner_labels }}
--no-interactive
chdir: "{{ gitea_runner_dir }}"
when: not runner_config.stat.exists
register: register_result
- name: Show registration result
ansible.builtin.debug:
var: register_result.stdout_lines
when: register_result is changed
# =========================================================================
# Create Systemd Service
# =========================================================================
- name: Create systemd service for runner
ansible.builtin.copy:
dest: /etc/systemd/system/gitea-runner.service
mode: "0644"
content: |
[Unit]
Description=Gitea Actions Runner
After=network.target docker.service
Requires=docker.service
[Service]
Type=simple
User=root
WorkingDirectory={{ gitea_runner_dir }}
ExecStart={{ gitea_runner_dir }}/act_runner daemon
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: true
- name: Start and enable runner service
ansible.builtin.systemd:
name: gitea-runner
state: started
enabled: true
# =========================================================================
# Verify
# =========================================================================
- name: Wait for runner to be active
ansible.builtin.pause:
seconds: 5
- name: Check runner status
ansible.builtin.systemd:
name: gitea-runner
register: runner_status
- name: Display deployment status
ansible.builtin.debug:
msg: |
============================================
Gitea Actions Runner Deployed!
============================================
Service status: {{ runner_status.status.ActiveState }}
The runner should now appear in:
{{ gitea_url }}/admin/actions/runners
Labels available:
{{ gitea_runner_labels }}
View logs:
journalctl -u gitea-runner -f
============================================

View File

@@ -0,0 +1,8 @@
---
all:
children:
gitea_runner_servers:
hosts:
gitea-runner-poc:
ansible_host: observability-poc.networkmonitor.cc
ansible_user: root