# 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 ansible.builtin.command: cmd: dnf -qy module disable postgresql creates: /etc/dnf/modules.d/postgresql.module - name: Install PostgreSQL {{ postgresql_version }} ansible.builtin.dnf: name: - postgresql{{ postgresql_version }}-server - python{{ ansible_python.version.major }}-psycopg2 update_cache: true state: present - name: Create PostgreSQL service override directory ansible.builtin.file: path: /etc/systemd/system/{{ postgresql_service }}.service.d owner: root group: root mode: u=rwx,g=rx,o=rx state: directory - name: Copy PostgreSQL service override file ansible.builtin.template: src: "{{ postgresql_service }}.service.j2" dest: /etc/systemd/system/{{ postgresql_service }}.service.d/override.conf owner: root group: root mode: u=rw,g=r,o=r notify: Reload systemd - name: Flush handlers ansible.builtin.meta: flush_handlers - name: Create PostgreSQL directories ansible.builtin.file: path: "{{ item }}" owner: postgres group: postgres mode: u=rwx,go= seuser: system_u serole: object_r setype: postgresql_db_t selevel: s0 state: directory loop: - "{{ postgresql_pgdata }}" - "{{ postgresql_wal_archive }}" - name: Initialize database ansible.builtin.command: cmd: /usr/pgsql-{{ postgresql_version }}/bin/postgresql-{{ postgresql_version }}-setup initdb creates: "{{ postgresql_pgdata }}/base" - name: Copy postgresql.conf ansible.builtin.template: src: postgresql.conf.j2 dest: "{{ postgresql_pgdata }}/postgresql.conf" owner: postgres group: 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 group: postgres mode: u=rw,go= notify: Reload PostgreSQL - name: Flush handlers ansible.builtin.meta: flush_handlers - name: Ensure PostgreSQL is enabled and running ansible.builtin.service: name: "{{ postgresql_service }}" enabled: true state: started - name: Set up databases ansible.builtin.include_tasks: file: database.yml apply: become: true become_user: postgres loop: "{{ postgresql_db_list }}" loop_control: loop_var: db no_log: true