- Enable sigvild-gallery role in site.yml playbook - Add backup configuration to host variables - Integrate restore functionality into main sigvild-gallery tasks - Add data protection logic to prevent accidental overwrites - Enable gitea role for complete service deployment This completes the sigvild-gallery service integration with backup/restore capabilities.
133 lines
3.5 KiB
YAML
133 lines
3.5 KiB
YAML
---
|
||
# Sigvild Gallery Deployment Tasks
|
||
|
||
- name: Install required packages
|
||
pacman:
|
||
name:
|
||
- rsync
|
||
state: present
|
||
- name: Create sigvild gallery user
|
||
user:
|
||
name: "{{ sigvild_gallery_user }}"
|
||
system: yes
|
||
shell: /bin/bash
|
||
home: "{{ sigvild_gallery_home }}"
|
||
create_home: yes
|
||
|
||
- name: Create directories
|
||
file:
|
||
path: "{{ item }}"
|
||
state: directory
|
||
owner: "{{ sigvild_gallery_user }}"
|
||
group: "{{ sigvild_gallery_user }}"
|
||
mode: '0755'
|
||
loop:
|
||
- "{{ sigvild_gallery_home }}"
|
||
- "{{ sigvild_gallery_data_dir }}"
|
||
- "{{ sigvild_gallery_web_root }}"
|
||
|
||
- name: Check for existing gallery data
|
||
stat:
|
||
path: "{{ sigvild_gallery_data_dir }}/data.db"
|
||
register: existing_gallery_data
|
||
tags: [restore, backend]
|
||
|
||
- name: Check for available backup files
|
||
local_action:
|
||
module: find
|
||
paths: "{{ sigvild_gallery_backup_local_path }}"
|
||
patterns: "sigvild-gallery-backup-*.tar.gz"
|
||
register: backup_files
|
||
become: false
|
||
when: sigvild_gallery_backup_enabled | default(false)
|
||
tags: [restore, backend]
|
||
|
||
- name: Initialize backup_files when backup disabled
|
||
set_fact:
|
||
backup_files: {"files": []}
|
||
when: not (sigvild_gallery_backup_enabled | default(false))
|
||
|
||
- name: Restore from backup if no data exists and backups available
|
||
include_tasks: restore.yml
|
||
when:
|
||
- sigvild_gallery_backup_enabled | default(false)
|
||
- backup_files.files | length > 0
|
||
- not existing_gallery_data.stat.exists
|
||
tags: [restore, backend]
|
||
|
||
- name: Skip restore - existing data found
|
||
debug:
|
||
msg:
|
||
- "ℹ️ Existing gallery data found at {{ sigvild_gallery_data_dir }}/data.db"
|
||
- "Skipping restore to preserve existing data"
|
||
- "To force restore, manually remove existing data first"
|
||
when:
|
||
- sigvild_gallery_backup_enabled | default(false)
|
||
- backup_files.files | length > 0
|
||
- existing_gallery_data.stat.exists
|
||
tags: [restore, backend]
|
||
|
||
- name: Build and deploy backend
|
||
include_tasks: deploy_backend.yml
|
||
tags: [backend, build]
|
||
|
||
- name: Build and deploy frontend
|
||
include_tasks: deploy_frontend.yml
|
||
tags: [frontend, build]
|
||
|
||
- name: Deploy systemd service
|
||
template:
|
||
src: sigvild-gallery.service.j2
|
||
dest: /etc/systemd/system/sigvild-gallery.service
|
||
owner: root
|
||
group: root
|
||
mode: '0644'
|
||
notify:
|
||
- reload systemd
|
||
- restart sigvild-gallery
|
||
tags: [backend, service]
|
||
|
||
- name: Deploy Caddy configurations
|
||
template:
|
||
src: "{{ item.src }}"
|
||
dest: "{{ caddy_sites_enabled_dir }}/{{ item.dest }}"
|
||
owner: root
|
||
group: "{{ caddy_user }}"
|
||
mode: '0644'
|
||
loop:
|
||
- { src: 'frontend.caddy.j2', dest: 'sigvild-frontend.caddy' }
|
||
- { src: 'api.caddy.j2', dest: 'sigvild-api.caddy' }
|
||
notify: reload caddy
|
||
tags: [caddy, frontend, backend]
|
||
|
||
- name: Enable and start sigvild-gallery service
|
||
systemd:
|
||
name: sigvild-gallery
|
||
enabled: "{{ sigvild_gallery_service_enabled }}"
|
||
state: "{{ sigvild_gallery_service_state }}"
|
||
daemon_reload: yes
|
||
tags: [backend, service]
|
||
|
||
- name: Create superuser account
|
||
command: >
|
||
{{ sigvild_gallery_binary }} superuser upsert
|
||
"{{ vault_pb_su_email }}"
|
||
"{{ vault_pb_su_password }}"
|
||
args:
|
||
chdir: "{{ sigvild_gallery_home }}"
|
||
become: yes
|
||
become_user: "{{ sigvild_gallery_user }}"
|
||
register: superuser_result
|
||
failed_when: superuser_result.rc != 0
|
||
|
||
- name: Verify gallery health
|
||
uri:
|
||
url: "https://{{ sigvild_gallery_api_domain }}/api/health"
|
||
method: GET
|
||
status_code: [200, 404] # 404 is ok if health endpoint doesn't exist yet
|
||
timeout: 15
|
||
retries: 5
|
||
delay: 5
|
||
ignore_errors: yes
|
||
tags: [verify]
|