3 Commits

7 changed files with 37 additions and 2 deletions

View File

@ -1,12 +1,13 @@
namespace: finallycoffee
name: databases
version: 0.1.1
version: 0.1.2
readme: README.md
authors:
- transcaffeine <transcaffeine@finally.coffee>
description: Collection for deploying and configuring databases
dependencies:
"community.docker": "^3.0.0"
"community.docker": "^4.0.0"
"community.postgresql": "^3.9.0"
license_file: LICENSE.md
build_ignore:
- '*.tar.gz'

View File

@ -3,6 +3,24 @@
PostgreSQL is the self proclaimed "world's most advanced" open source relational
database. This ansible role can deploy and configure postgresql.
By default, the role configures the remote's effective ansible user with
peer authentication for the (postgresql) role `postgres` on all databases (with all grants).
## Required configuration
Set `postgresql_superuser_password` to your superusers desired password.
## Optional configuration
Set `postgresql_major_version` to your desired postgresql major version,
for supported major versions see [`defaults/main/main.yml`](defaults/main/main.yml#L6).
This role can be executed multiple times with different
`postgresql_major_version` values to provide new database versions for up-to-
date applications and older versions for software which does not yet support
them. Container name and host mounts encode the major version to prevent
accidental usage of the 'wrong' `PGDATA` directory.
## Requirements
- `psycopg2` (pip) package

View File

@ -50,6 +50,7 @@
loop_control:
loop_var: result
label: "{{ result.option.key }}"
when: postgresql_state == 'present'
vars:
postgresql_login_host: >-2
{{

View File

@ -0,0 +1,11 @@
---
- name: Ensure postgresql package is {{ postgresql_state }}
ansible.builtin.package:
name: "{{ postgresql_os_package_name }}"
state: "{{ postgresql_state }}"
- name: Ensure postgresql systemd unit is {{ (postgresql_state == 'present') | ternary('enabled', 'disabled') }}
ansible.builtin.systemd:
name: "{{ postgresql_systemd_service_name }}"
enabled: "{{ (postgresql_state == 'present') }}"
when: ansible_facts['service_mgr'] == 'systemd'

View File

@ -33,6 +33,7 @@
loop:
- name: "{{ postgresql_config_path }}"
- name: "{{ postgresql_data_path }}"
mode: "0700"
loop_control:
loop_var: path
label: "{{ path.name }}"

View File

@ -22,6 +22,7 @@
insert_after: "# Ansible managed"
line: "{{ postgresql_admin_pg_ident_conf }}"
when: postgresql_state == 'present'
notify: postgresql_restart
- name: Configure permissions for postgresql admin role
community.postgresql.postgresql_pg_hba:
@ -31,3 +32,4 @@
method: "{{ postgresql_admin_role_method }}"
options: "{{ postgresql_admin_pg_hba_conf_options }}"
when: postgresql_state == 'present'
notify: postgresql_restart

View File

@ -4,3 +4,4 @@ postgresql_states:
- absent
postgresql_deployment_methods:
- docker
- local