add postgres1c role

This commit is contained in:
Sergey Malyuk
2025-12-19 12:16:06 +03:00
parent 6876365108
commit 36d6be271e
13 changed files with 333 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
---
- name: Converge
hosts: all
roles:
- role: genlab.common.postgres1c
postgres1c_version: 15
postgres1c_postgres_pw_path: "secrets/postgresql.yaml"
postgres1c_backup_timer: "Sat *-*-* 02:00:00"
postgres1c_backup_compression: "5"
# backup enabled by default at /var/backups/postgres1c/backup_<db_name>.dump

View File

@@ -0,0 +1,22 @@
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: ubuntu
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible:latest
pre_build_image: true
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
provisioner:
name: ansible
verifier:
name: ansible
lint: |
set -e
yamllint .
ansible-lint .

View File

@@ -0,0 +1,2 @@
---
postgres1c_postgres_pw: 12345

View File

@@ -0,0 +1,58 @@
---
- name: Verify
hosts: all
gather_facts: false
tasks:
- name: "Include default role vars"
ansible.builtin.include_vars:
dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults/"
extensions: [ 'yml' ]
- name: "Get 'postgres' user password"
tags: [postgres1c]
ansible.builtin.include_vars:
file: "secrets/postgresql.yaml"
- name: "Check that PostgreSQL server responds to the 'postgres' user credentials"
register: postgres1c__verify_db_version
community.postgresql.postgresql_info:
login_host: localhost
login_user: postgres
login_password: "{{ postgres1c_postgres_pw }}"
filter: "version"
- name: "Verify that correct PostgreSQL version is installed"
ansible.builtin.assert:
that: postgres1c__verify_db_version.version.major == postgres1c_major_ver
success_msg: >
Detected expected PostgreSQL version
'{{ postgres1c__verify_db_version.version.major }}'
({{ postgres1c__verify_db_version.version }})"
fail_msg: >
Expected PostgreSQL version '{{ postgres1c_major_ver }}';
Actual '{{ postgres1c__verify_db_version.version.major }}'
({{ postgres1c__verify_db_version.version.major }})"
- name: Start service postgrespro-1c (i.e. do nothing and throw fail if it start)
ansible.builtin.service:
name: "postgrespro-1c-{{ postgres1c_version }}"
state: started
register: start_postgrespro1c
failed_when: start_postgrespro1c.changed
- name: Create a new database with name "test"
tags: [postgres1c]
become: true
become_user: postgres
community.postgresql.postgresql_db:
name: test
comment: "test-db"
login_unix_socket: "/tmp"
- name: Test backup without cron
tags: [postgres1c]
become: true
become_user: postgres
ansible.builtin.command: /opt/postgres1c_backup/backup.sh
args:
creates: /var/backups/postgres1c/backup_test.tar