2023-11-12 16:59:18 +00:00
|
|
|
# vim: ft=yaml.ansible
|
|
|
|
# code: language=ansible
|
|
|
|
---
|
|
|
|
- name: Add PostgreSQL repository
|
|
|
|
ansible.builtin.dnf:
|
|
|
|
name: https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
|
|
|
|
state: present
|
|
|
|
|
|
|
|
- name: Disable built-in PostgreSQL module
|
|
|
|
community.general.ini_file:
|
|
|
|
path: /etc/dnf/modules.d/postgresql.module
|
|
|
|
section: postgresql
|
|
|
|
option: state
|
|
|
|
value: disabled
|
|
|
|
no_extra_spaces: true
|
|
|
|
create: false
|
|
|
|
state: present
|
|
|
|
|
|
|
|
- name: Install PostgreSQL {{ postgresql_version }}
|
|
|
|
ansible.builtin.dnf:
|
2023-11-12 19:22:32 +00:00
|
|
|
name:
|
|
|
|
- postgresql{{ postgresql_version }}-server
|
|
|
|
- python{{ ansible_python.version.major }}-psycopg2
|
2023-11-26 16:37:17 +00:00
|
|
|
- python{{ ansible_python.version.major }}-ipaddress
|
2023-11-26 19:02:55 +00:00
|
|
|
update_cache: true
|
2023-11-12 16:59:18 +00:00
|
|
|
state: present
|
2023-11-12 19:22:32 +00:00
|
|
|
|
2023-11-13 20:17:17 +00:00
|
|
|
- name: Create PostgreSQL service override folder
|
2023-11-12 19:22:32 +00:00
|
|
|
ansible.builtin.file:
|
|
|
|
path: /etc/systemd/system/{{ postgresql_service }}.service.d
|
|
|
|
owner: root
|
|
|
|
mode: u=rwx,g=rx,o=rx
|
|
|
|
state: directory
|
|
|
|
|
|
|
|
- name: Copy PostgreSQL service override file
|
|
|
|
ansible.builtin.template:
|
2023-12-23 16:41:57 +00:00
|
|
|
src: "{{ postgresql_service }}.service.j2"
|
2023-11-12 19:22:32 +00:00
|
|
|
dest: /etc/systemd/system/{{ postgresql_service }}.service.d/override.conf
|
|
|
|
owner: root
|
|
|
|
mode: u=rw,g=r,o=r
|
|
|
|
notify: Reload systemd
|
|
|
|
|
|
|
|
- name: Flush handlers
|
|
|
|
ansible.builtin.meta: flush_handlers
|
|
|
|
|
2023-11-13 20:17:17 +00:00
|
|
|
- name: Create PGDATA folder
|
|
|
|
ansible.builtin.file:
|
|
|
|
path: "{{ postgresql_pgdata }}"
|
|
|
|
owner: root
|
|
|
|
mode: u=rwx,g=rx,o=rx
|
|
|
|
state: directory
|
|
|
|
|
2023-11-12 19:22:32 +00:00
|
|
|
- name: Initialize database
|
|
|
|
ansible.builtin.command:
|
|
|
|
cmd: /usr/pgsql-{{ postgresql_version }}/bin/postgresql-{{ postgresql_version }}-setup initdb
|
2023-11-12 20:46:25 +00:00
|
|
|
creates: "{{ postgresql_pgdata }}/base"
|
2023-12-05 21:08:55 +00:00
|
|
|
become: true
|
|
|
|
become_user: postgres
|
2023-11-12 19:22:32 +00:00
|
|
|
|
2023-12-23 16:41:57 +00:00
|
|
|
- name: Copy postgresql.conf
|
|
|
|
ansible.builtin.template:
|
|
|
|
src: postgresql.conf.j2
|
|
|
|
dest: "{{ postgresql_pgdata }}/postgresql.conf"
|
|
|
|
owner: postgres
|
|
|
|
mode: u=rw,go=
|
|
|
|
notify: Reload PostgreSQL
|
|
|
|
|
|
|
|
- name: Copy pg_hba.conf
|
|
|
|
ansible.builtin.template:
|
|
|
|
src: pg_hba.conf.j2
|
|
|
|
dest: "{{ postgresql_pgdata }}/pg_hba.conf"
|
|
|
|
owner: postgres
|
|
|
|
mode: u=rw,go=
|
|
|
|
notify: Reload PostgreSQL
|
|
|
|
|
2023-11-12 19:22:32 +00:00
|
|
|
- name: Ensure PostgreSQL is enabled and running
|
|
|
|
ansible.builtin.service:
|
|
|
|
name: "{{ postgresql_service }}"
|
|
|
|
enabled: true
|
|
|
|
state: started
|
2023-11-26 16:37:17 +00:00
|
|
|
|
|
|
|
- name: Set up databases
|
|
|
|
ansible.builtin.include_tasks: database.yml
|
|
|
|
vars:
|
|
|
|
db_name: "{{ item.key }}"
|
|
|
|
db_vars: "{{ item.value }}"
|
|
|
|
loop: "{{ databases | dict2items }}"
|