Backport fixes from version in production

Per file detail:
backup.yml
      - Added role defaults loading with proper precedence (inventory > vars > defaults)
      - Fixed pg_dump permissions: now dumps to /tmp first, then moves to backup directory
update.yml
      - Added role defaults loading with proper precedence
      - Fixed docker exec commands to use --user {{ forgejo_user }}
      - Added monitoring compose file detection and handling
restore.yml
      - Added role defaults loading with proper precedence
      - Added monitoring compose file detection and handling
      - Fixed docker exec for doctor command to use --user {{ forgejo_user }}
Makefile
       - Updated .PHONY with new targets
       - Replaced auto-generated help with structured categorized help
       - Added backup-cron and backup-cron-s3 targets for non-interactive backups
       - Added cron job example in help output
This commit is contained in:
Horacio Duran 2026-01-15 22:26:27 +01:00
parent dff39e3d36
commit c09bf58ea7
4 changed files with 143 additions and 20 deletions

View file

@ -18,6 +18,18 @@
force_restore: false
pre_tasks:
- name: Load role defaults as fallback
ansible.builtin.include_vars:
file: ../roles/forgejo/defaults/main.yml
name: role_defaults
- name: Apply all role defaults for undefined variables
ansible.builtin.set_fact:
"{{ item.key }}": "{{ vars[item.key] | default(item.value) }}"
loop: "{{ role_defaults | dict2items }}"
loop_control:
label: "{{ item.key }}"
- name: Validate backup timestamp
ansible.builtin.fail:
msg: "Please provide backup_timestamp via --extra-vars 'backup_timestamp=20240115T120000'"
@ -100,11 +112,17 @@
register: db_backup
failed_when: not db_backup.stat.exists
- name: Check if monitoring compose file exists
ansible.builtin.stat:
path: "{{ forgejo_base_path }}/docker-compose.monitoring.yml"
register: monitoring_compose
- name: Stop Forgejo service
community.docker.docker_compose_v2:
project_src: "{{ forgejo_base_path }}"
files: "{{ ['docker-compose.yml', 'docker-compose.monitoring.yml'] if monitoring_compose.stat.exists else ['docker-compose.yml'] }}"
state: stopped
- name: Restore PostgreSQL database
when: forgejo_db_type == 'postgres'
block:
@ -180,8 +198,9 @@
- name: Start Forgejo service
community.docker.docker_compose_v2:
project_src: "{{ forgejo_base_path }}"
files: "{{ ['docker-compose.yml', 'docker-compose.monitoring.yml'] if monitoring_compose.stat.exists else ['docker-compose.yml'] }}"
state: present
- name: Wait for Forgejo to be ready
ansible.builtin.uri:
url: "http://localhost:{{ forgejo_http_port }}"
@ -193,7 +212,7 @@
- name: Run integrity checks
ansible.builtin.command:
cmd: docker exec forgejo forgejo doctor check --all
cmd: docker exec --user {{ forgejo_user }} forgejo forgejo doctor check --all
register: integrity_check
failed_when: false