infra/home/ansible/postgresql-pre-upgrade-check.yml
2025-09-08 10:13:45 -05:00

85 lines
No EOL
2.4 KiB
YAML

---
- name: Pre-upgrade checks for PostgreSQL
hosts: postgresql
become: yes
gather_facts: yes
tasks:
- name: Check current PostgreSQL version
command: sudo -u postgres psql -t -c "SELECT version();"
register: pg_version
changed_when: false
- name: Display current version
debug:
msg: "Current version: {{ pg_version.stdout }}"
- name: Check PostgreSQL service status
command: systemctl status postgresql
register: pg_status
changed_when: false
- name: List PostgreSQL clusters
command: pg_lsclusters
register: pg_clusters
changed_when: false
- name: Display clusters
debug:
var: pg_clusters.stdout_lines
- name: Get database sizes
become_user: postgres
shell: |
psql -t -c "SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) FROM pg_database WHERE datname NOT IN ('template0', 'template1') ORDER BY pg_database_size(pg_database.datname) DESC;"
register: db_sizes
changed_when: false
- name: Display database sizes
debug:
msg: "Database sizes:"
- name: Show database sizes
debug:
var: db_sizes.stdout_lines
- name: Check disk space
command: df -h /var/lib/postgresql
register: disk_space
changed_when: false
- name: Display disk space
debug:
var: disk_space.stdout_lines
- name: List installed PostgreSQL packages
shell: dpkg -l | grep postgresql | grep -E "^ii"
register: pg_packages
changed_when: false
- name: Display PostgreSQL packages
debug:
var: pg_packages.stdout_lines
- name: Check active connections
become_user: postgres
shell: |
psql -t -c "SELECT count(*) as connections, datname FROM pg_stat_activity GROUP BY datname ORDER BY connections DESC;"
register: active_connections
changed_when: false
- name: Display active connections
debug:
var: active_connections.stdout_lines
- name: Check for replication slots (if any)
become_user: postgres
command: psql -t -c "SELECT * FROM pg_replication_slots;"
register: replication_slots
changed_when: false
ignore_errors: yes
- name: Display replication slots
debug:
var: replication_slots.stdout_lines
when: replication_slots.rc == 0