--- # 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]