ansible-role-wikijs/docs/POSTGRES.md

1.4 KiB

PostgreSQL

Here is an example using anxs.postgresql

Example Playbook

  roles:
    - anxs.postgresql

Example Variables

postgresql_users:
  - name: wikijs
    pass: "{{ lookup('ansible.builtin.env', 'WIKIJS_POSTGRES_PASSWORD') }}"
    encrypted: yes
    state: present

postgresql_databases:
  - name: wikijs
    owner: wikijs
    state: present

Depending on the OS version you're using, you may have to account for the usage of deprecated apt-key functionality.

PG 15

I'm temporarily using this branch to get PG15:

  - src: https://github.com/ANXS/postgresql
    name: anxs.postgresql
    version: development

Backups

BACKUP_PG_DB() {
    BACKUP_DIR=$HOME/archive/${TARGET}/postgresql
    DUMP_FILE=/var/lib/postgresql/${1}_${TIMESTAMP}.dump.bz2
    ssh root@${TARGET} "cd /var/lib/postgresql && doas -u postgres /usr/bin/pg_dump -Fc ${1} | /usr/bin/bzip2 > ${DUMP_FILE}"
    mkdir -p ${BACKUP_DIR}
    rsync -tav root@${TARGET}:${DUMP_FILE} ${BACKUP_DIR}/
    ssh root@${TARGET} rm -v ${DUMP_FILE}

    # Only remove older backups if newer backups exist
    NEWER_BACKUPS=$(find $BACKUP_DIR -mtime -60 -type f -name "${1}_*.dump.bz2")
    if [[ -n $NEWER_BACKUPS ]]; then
        find $BACKUP_DIR -mtime +60 -type f -name "${1}_*.dump.bz2" -delete
    else
        echo "No newer backups found. Old backups not pruned."
    fi
}
BACKUP_PG_DB wikijs