new-site/infra/ansible/roles/postgresql/tasks/main.yml
justin f8cd37ac8c Initial commit — Performance West telecom compliance platform
Includes: API (Express/TypeScript), Astro site, Python workers,
document generators, FCC compliance tools, Canada CRTC formation,
Ansible infrastructure, and deployment scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 06:54:22 -05:00

58 lines
1.5 KiB
YAML

---
- name: Create PostgreSQL data directory
ansible.builtin.file:
path: /opt/performancewest/pgdata
state: directory
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: "0700"
- name: Create backup directory
ansible.builtin.file:
path: "{{ pg_backup_dir }}"
state: directory
owner: root
group: root
mode: "0700"
- name: Start PostgreSQL container
ansible.builtin.command:
cmd: docker compose up -d postgres
chdir: /opt/performancewest
register: pg_start
changed_when: "'Started' in pg_start.stderr or 'Creating' in pg_start.stderr"
- name: Wait for PostgreSQL to accept connections
ansible.builtin.command:
cmd: >-
docker compose exec -T postgres
pg_isready -U {{ pg_user }} -d {{ pg_database }}
chdir: /opt/performancewest
register: pg_ready
retries: 12
delay: 5
until: pg_ready.rc == 0
changed_when: false
- name: Run database migrations
ansible.builtin.command:
cmd: docker compose exec -T api npm run db:migrate
chdir: /opt/performancewest
register: db_migrate
changed_when: "'migrated' in db_migrate.stdout"
- name: Deploy PostgreSQL backup script
ansible.builtin.template:
src: pg-backup.sh.j2
dest: /usr/local/bin/pg-backup.sh
owner: root
group: root
mode: "0700"
- name: Set up daily PostgreSQL backup cron
ansible.builtin.cron:
name: "Daily PostgreSQL backup"
minute: "0"
hour: "2"
job: "/usr/local/bin/pg-backup.sh >> /var/log/pg-backup.log 2>&1"
user: root