---
# Main stack host: public web + bot-link ports and the external 'edge' network
# the compose stack attaches caddy to.

- name: Open public web and bot-link ports
  community.general.ufw:
    rule: allow
    port: "{{ item }}"
    proto: tcp
  loop:
    - "80"    # HTTP (ACME challenge + redirect to HTTPS)
    - "443"   # HTTPS (caddy edge)
    - "9443"  # bot-link mTLS (remote bot dials in; mutual TLS gates access)

- name: Ensure the external 'edge' docker network exists
  community.docker.docker_network:
    name: edge
    state: present

# --- pgBackRest base-backup schedule (point-in-time recovery) ------------------
# A daily full base backup via a systemd timer that runs pgBackRest inside the postgres
# container; archive_command handles the continuous WAL between backups. Gated by
# pitr_enabled so the schedule stays inert until archiving is armed (the S3 repository +
# stanza must exist first, or the run fails nightly). Arm per deploy/README.md.
- name: Install the pgBackRest base-backup service
  ansible.builtin.template:
    src: pgbackrest-backup.service.j2
    dest: /etc/systemd/system/pgbackrest-backup.service
    mode: "0644"
  when: pitr_enabled | default(false) | bool

- name: Install the pgBackRest base-backup timer
  ansible.builtin.template:
    src: pgbackrest-backup.timer.j2
    dest: /etc/systemd/system/pgbackrest-backup.timer
    mode: "0644"
  when: pitr_enabled | default(false) | bool

- name: Enable and start the pgBackRest base-backup timer
  ansible.builtin.systemd:
    name: pgbackrest-backup.timer
    enabled: true
    state: started
    daemon_reload: true
  when: pitr_enabled | default(false) | bool
