infrastructure/playbooks/roles/postgresql/tasks/main.yml

90 lines
2.4 KiB
YAML

- name: Ensure directory for postgresql repo key exists
ansible.builtin.file:
path: "{{ postgresql_repo_key_dir }}"
state: directory
mode: "0755"
become: true
- name: Add postgresql repo key
ansible.builtin.get_url:
url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
dest: "{{ postgresql_repo_key_file }}"
mode: "0644"
become: true
- name: Add postgresql repo into sources list
ansible.builtin.apt_repository:
repo: deb [signed-by={{ postgresql_repo_key_file }}] https://apt.postgresql.org/pub/repos/apt {{ ansible_distribution_release }}-pgdg main
state: present
become: true
- name: Install postgresql
ansible.builtin.apt:
pkg:
- postgresql-16
- python3-psycopg
state: present
update_cache: true
become: true
- name: Check out if postgresql is initialized
ansible.builtin.stat:
path: "{{ postgresql_data_dir }}"
register: postgresql_data_stat
become: true
- name: Initialize postgresql
ansible.builtin.command: "{{ postgresql_bin_initdb }} -D {{ postgresql_data_dir }}"
when: not postgresql_data_stat.stat.exists
changed_when: true
- name: Replace everything with a new set of rules
community.postgresql.postgresql_pg_hba:
dest: "{{ postgresql_conf_pg_hba }}"
overwrite: true # remove pre-existing rules
# defaults
rules_behavior: combine
contype: hostssl
users: all
databases: all
method: scram-sha-256
rules:
- contype: local
users: postgres
method: trust
- contype: hostssl
address: "0.0.0.0/0"
- contype: hostssl
address: "::/0"
become: true
register: pg_hba_reg
- name: Restart postgresql on pg_hba change
ansible.builtin.systemd_service:
state: restarted
name: postgresql
when: pg_hba_reg.changed # noqa: no-handler TODO can we add a handler here?
become: true
- name: Start postgresql
ansible.builtin.systemd_service:
state: started
name: postgresql
become: true
- name: Set parameters
community.postgresql.postgresql_set:
login_unix_socket: /var/run/postgresql
login_user: postgres
name: "{{ item.name }}"
value: "{{ item.value }}"
loop: "{{ postgresql_set_vars | dict2items(key_name='name', value_name='value') }}"
register: set
- name: Restart postgresql
ansible.builtin.systemd_service:
state: restarted
name: postgresql
when: set.results | postgresql_restart_required
become: true