107 lines
3.6 KiB
YAML
107 lines
3.6 KiB
YAML
---
|
|
- name: Instalar PostgreSQL (versión disponible en Debian)
|
|
apt:
|
|
name:
|
|
- postgresql
|
|
- postgresql-contrib
|
|
- python3-psycopg2
|
|
state: present
|
|
update_cache: yes
|
|
|
|
- name: Detectar versión de PostgreSQL instalada
|
|
shell: "ls -1 /etc/postgresql/ | head -1"
|
|
register: pg_version
|
|
changed_when: false
|
|
|
|
- name: Configurar PostgreSQL para escuchar en localhost
|
|
lineinfile:
|
|
path: "/etc/postgresql/{{ pg_version.stdout }}/main/postgresql.conf"
|
|
regexp: '^#?listen_addresses'
|
|
line: "listen_addresses = 'localhost'"
|
|
notify: restart postgresql
|
|
|
|
- name: Permitir conexiones locales con password
|
|
lineinfile:
|
|
path: "/etc/postgresql/{{ pg_version.stdout }}/main/pg_hba.conf"
|
|
insertafter: '^# "local" is for Unix domain socket'
|
|
line: "host all all 127.0.0.1/32 scram-sha-256"
|
|
notify: restart postgresql
|
|
|
|
- name: Asegurar PostgreSQL iniciado y habilitado
|
|
systemd:
|
|
name: postgresql
|
|
state: started
|
|
enabled: yes
|
|
|
|
- name: Esperar a que PostgreSQL esté listo
|
|
wait_for:
|
|
port: 5432
|
|
timeout: 30
|
|
|
|
- name: Cambiar contraseña del usuario postgres
|
|
postgresql_user:
|
|
name: postgres
|
|
password: "{{ core_db_credentials.postgres_root_password }}"
|
|
login_unix_socket: /var/run/postgresql
|
|
become_user: postgres
|
|
|
|
- name: Crear bases de datos
|
|
postgresql_db:
|
|
name: "{{ item.name }}"
|
|
encoding: UTF-8
|
|
lc_collate: es_ES.UTF-8
|
|
lc_ctype: es_ES.UTF-8
|
|
template: template0
|
|
login_unix_socket: /var/run/postgresql
|
|
become_user: postgres
|
|
loop:
|
|
- { name: "{{ core_db_credentials.dolibarr_db_name }}" }
|
|
- { name: "{{ core_db_credentials.teable_db_name }}" }
|
|
- { name: "{{ core_db_credentials.activepieces_db_name }}" }
|
|
- { name: "{{ core_db_credentials.wikijs_db_name }}" }
|
|
- { name: "{{ core_db_credentials.metabase_db_name }}" }
|
|
|
|
- name: Crear usuarios de bases de datos
|
|
postgresql_user:
|
|
name: "{{ item.user }}"
|
|
password: "{{ item.pass }}"
|
|
db: "{{ item.db }}"
|
|
priv: ALL
|
|
login_unix_socket: /var/run/postgresql
|
|
become_user: postgres
|
|
loop:
|
|
- { user: "{{ core_db_credentials.dolibarr_db_user }}", pass: "{{ core_db_credentials.dolibarr_db_pass }}", db: "{{ core_db_credentials.dolibarr_db_name }}" }
|
|
- { user: "{{ core_db_credentials.teable_db_user }}", pass: "{{ core_db_credentials.teable_db_pass }}", db: "{{ core_db_credentials.teable_db_name }}" }
|
|
- { user: "{{ core_db_credentials.activepieces_db_user }}", pass: "{{ core_db_credentials.activepieces_db_pass }}", db: "{{ core_db_credentials.activepieces_db_name }}" }
|
|
- { user: "{{ core_db_credentials.wikijs_db_user }}", pass: "{{ core_db_credentials.wikijs_db_pass }}", db: "{{ core_db_credentials.wikijs_db_name }}" }
|
|
- { user: "{{ core_db_credentials.metabase_db_user }}", pass: "{{ core_db_credentials.metabase_db_pass }}", db: "{{ core_db_credentials.metabase_db_name }}" }
|
|
|
|
- name: Crear script de backup automático
|
|
copy:
|
|
dest: /usr/local/bin/backup-postgres-core.sh
|
|
mode: '0755'
|
|
content: |
|
|
#!/bin/bash
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
|
BACKUP_DIR="/opt/backups/postgres"
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
su - postgres -c "pg_dumpall" | gzip > "$BACKUP_DIR/all_dbs_$DATE.sql.gz"
|
|
|
|
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
|
|
|
|
echo "✓ Backup PostgreSQL completado: $DATE"
|
|
|
|
- name: Crear directorio de backups
|
|
file:
|
|
path: /opt/backups/postgres
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Programar backup diario PostgreSQL
|
|
cron:
|
|
name: "Backup PostgreSQL CORE"
|
|
minute: "0"
|
|
hour: "3"
|
|
job: "/usr/local/bin/backup-postgres-core.sh >> /var/log/postgres-backup.log 2>&1"
|