Add postgresql role
This commit is contained in:
parent
4f97b66c3d
commit
56885d70b6
7 changed files with 152 additions and 4 deletions
playbooks/roles/postgresql/tasks
90
playbooks/roles/postgresql/tasks/main.yml
Normal file
90
playbooks/roles/postgresql/tasks/main.yml
Normal file
|
@ -0,0 +1,90 @@
|
|||
- 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
|
Loading…
Add table
Add a link
Reference in a new issue