90 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			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
 |