yurihs.postgres_backup
Rol de Ansible: Copias de Seguridad de Postgres
- Instala un script para hacer copias de seguridad de bases de datos PostgreSQL.
 - Soporta la copia de varios hosts.
 - Administra entradas de cron para ejecución regular.
 
¿Qué se respalda?
- Objetos globales (roles y tablespaces), comprimidos usando gzip. Puede deshabilitarse. Equivalente a 
pg_dumpall --globals-only | gzip - Todas las bases de datos legibles, en archivos separados, usando el formato "custom" de PostgreSQL. Equivalente a 
pg_dump --format=custom database 
Variables del rol (valores por defecto)
postgres_backup_list:
  - name: default
    pg_username: postgres
    pg_hostname: localhost
    pg_port: 5432
    do_backup_globals: true
    cron:
      minute: '0'
      hour: '*'
      day: '*'
      month: '*'
      weekday: '*'
Qué instancias de PostgreSQL respaldar (información de conexión) y (opcionalmente) con qué frecuencia.
Estas entradas se almacenan en archivos de configuración, por lo que debes considerar las implicaciones de seguridad de almacenar contraseñas en texto plano (si las especificas usando pg_password, consulta los ejemplos abajo). Por defecto, estos archivos serán legibles solo por su propietario (normalmente root).
Al eliminar un elemento de la lista, recuerda usar el parámetro state para eliminar el archivo de configuración y el trabajo de cron del sistema (consulta los ejemplos abajo).
postgres_backup_config_dir: /etc/postgres_backup
Dónde almacenar la configuración.
postgres_backup_default_output_dir: /srv/postgres_backup
Dónde almacenar las copias de seguridad. Cada entrada tendrá su propio directorio dentro de aquí. Esta variable puede ser sobrescrita por cada entrada en la lista de respaldo.
postgres_backup_default_date_format: "%Y-%m-%d_%H-%M"
Cómo formatear el directorio de salida para cada copia de seguridad. Puede ser sobrescrita por cada entrada en la lista de respaldo.
Ejemplos
Copia de seguridad horaria de un servidor PostgreSQL local
postgres_backup_list:
  - name: default
    pg_username: postgres
    pg_hostname: localhost
    pg_port: 5432
    do_backup_globals: true
    cron:
      minute: '0'
      hour: '*'
      day: '*'
      month: '*'
      weekday: '*'
Esta configuración resultará en la siguiente estructura:
/srv/
  postgres_backup/
    default/
      2019-01-01_00-00/
        globals.sql.gz
        database-a.custom
        database-b.custom
      2019-01-01_01-00/
        globals.sql.gz
        database-a.custom
        database-b.custom
Sin copias de seguridad automáticas, solo instalar el script y la configuración
postgres_backup_list:
  - name: default
    pg_username: postgres
    pg_hostname: localhost
    pg_port: 5432
Copia de seguridad diaria de un servidor remoto, usando una contraseña, y salida a un directorio diferente
postgres_backup_list:
  - name: production
    pg_username: backup
    pg_password: "hunter2"
    pg_hostname: db.example.com
    pg_port: 5432
    do_backup_globals: false
    output_dir: /opt/prod_db_bak
    cron:
      minute: '0'
      hour: '0'
      day: '*'
      month: '*'
      weekday: '*'
Esta configuración resultará en la siguiente estructura:
/opt/
  prod_db_bak/
    2019-01-01_00-00/
      users.custom
      posts.custom
    2019-01-02_00-00/
      users.custom
      posts.custom
Eliminar una configuración previamente definida
postgres_backup_list:
  - name: production
    state: absent
ansible-galaxy install yurihs.postgres_backup