refactor: consolidate all roles into ansible/roles/ and update ansible.cfg

- Move all roles from playbooks/roles/ to roles/
- Update roles_path in ansible.cfg
- Add cast user to common role
- Create standalone podman role
- Add semaphore role with Podman + Quadlet support
This commit is contained in:
Hermes Agent service account
2026-05-26 22:22:08 -05:00
parent 9250b0f193
commit 92b2a9d609
98 changed files with 158 additions and 78 deletions

View File

@@ -0,0 +1,27 @@
---
# ------------------------------------------------------------------------------
# FILE: ansible/playbooks/roles/gitea/tasks/configure_oidc.yml
# DESCRIPTION: Registers Authentik as an OAuth2 source in Gitea via the admin
# API. Idempotent — skips creation if source already exists.
# ------------------------------------------------------------------------------
- name: Check if authentik auth source already exists
ansible.builtin.command:
cmd: docker exec -u git gitea-gitea-1 gitea admin auth list
register: _auth_list
changed_when: false
- name: Create Authentik OAuth2 auth source
ansible.builtin.command:
cmd: >
docker exec -u git gitea-gitea-1 gitea admin auth add-oauth
--name authentik
--provider openidConnect
--key {{ gitea_oidc_client_id }}
--secret {{ gitea_oidc_client_secret }}
--auto-discover-url {{ gitea_oidc_discovery_url }}
--scopes "email profile"
--group-claim-name groups
--admin-group {{ gitea_oidc_admin_group }}
--skip-local-2fa false
when: "'authentik' not in _auth_list.stdout"

View File

@@ -0,0 +1,67 @@
---
# ------------------------------------------------------------------------------
# FILE: ansible/playbooks/roles/gitea/tasks/main.yml
# ------------------------------------------------------------------------------
# ── Directories ────────────────────────────────────────────────────────────────
- name: Create Gitea compose directory
ansible.builtin.file:
path: "{{ gitea_compose_dir }}"
state: directory
owner: root
group: root
mode: "0755"
# ── Compose & env ──────────────────────────────────────────────────────────────
- name: Deploy Gitea compose file from boilerplate
ansible.builtin.copy:
src: "{{ playbook_dir }}/../../boilerplates/gitea/compose.yaml"
dest: "{{ gitea_compose_dir }}/compose.yaml"
owner: root
group: root
mode: "0644"
notify: restart gitea
- name: Deploy .env file with secrets from vault
ansible.builtin.template:
src: env.j2
dest: "{{ gitea_compose_dir }}/.env"
owner: root
group: root
mode: "0600"
notify: restart gitea
# ── Compose stack ──────────────────────────────────────────────────────────────
- name: Start Gitea stack
community.docker.docker_compose_v2:
project_src: "{{ gitea_compose_dir }}"
state: present
recreate: always
# ── Traefik route ──────────────────────────────────────────────────────────────
# - name: Deploy Traefik dynamic config for Gitea
# ansible.builtin.copy:
# src: "{{ playbook_dir }}/../../boilerplates/traefik/dynamic/gitea.yml"
# dest: "{{ traefik_dynamic_config_dir }}/gitea.yml"
# owner: root
# group: root
# mode: "0644"
# delegate_to: localhost
# ── DNS ────────────────────────────────────────────────────────────────────────
# - name: Create DNS CNAME for Gitea
# ansible.builtin.include_role:
# name: add_service_route
# vars:
# service_name: "{{ gitea_cname_name }}"
# service_domain: "{{ gitea_cname_domain }}"
# target_host: "{{ gitea_cname_target }}"
- name: Configure Authentik OIDC source
ansible.builtin.import_tasks: configure_oidc.yml
when: gitea_oidc_enabled | bool
tags: oidc