diff --git a/tasks/main.yml b/tasks/main.yml index 082e732..022af1a 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,6 +1,8 @@ --- - name: Combining Pleroma config details set_fact: pleroma="{{ pleroma_defaults | combine(pleroma, recursive=true) }}" + tags: + - always - name: Installing and configuring PostgreSQL. include_tasks: diff --git a/tasks/postgres.yml b/tasks/postgres.yml index fe23d6e..37ed69a 100644 --- a/tasks/postgres.yml +++ b/tasks/postgres.yml @@ -11,25 +11,52 @@ - setup creates: /var/lib/postgresql/11/data/postgresql.conf -# ----------------------------------- -# TODO: Take a look at the postgres -# configuration file before going -# into production. -# ----------------------------------- -- name: Postgres -- Ensure that pg_hba.conf is configured. +- name: Postgres -- Ensuring that the additional directories exist. + file: + name: "{{ item }}" + state: directory + mode: '0700' + owner: postgres + group: postgres + loop: + - "{{ pleroma_postgres_log_dir }}" + - "{{ pleroma_postgres_confd }}" + +- name: Postgres -- Ensuring that PostgreSQL is configured. template: - src: etc_postgresql_pg_hba.conf.j2 - dest: /etc/postgresql/pg_hba.conf + src: "{{ item.src }}" + dest: "{{ item.dest }}" owner: postgres group: postgres mode: '0400' - notify: restart postgres + loop: + - { src: etc_postgresql_pg_hba.conf.j2, dest: "{{ pleroma_postgres_base_conf }}/pg_hba.conf" } + - { src: etc_postgresql_confd_postgresql_override.conf, dest: "{{ pleroma_postgres_confd }}/postgresql_override.conf" } -- name: Postgres -- Ensure that PostgreSQL is enabled and started. +- name: Postgres -- Ensuring that the symlink to the override config is present. + file: + group: postgres + mode: '0700' + owner: postgres + path: "{{ pleroma_postgres_confd_symlink }}" + src: "{{ pleroma_postgres_confd }}" + state: link + +- name: Postgres -- Ensuring that the override config is included in the main config. + lineinfile: + group: postgres + line: "include = '{{ pleroma_postgres_confd_symlink }}/postgresql_override.conf'" + mode: '0400' + owner: postgres + path: "{{ pleroma_postgres_base_conf }}/postgresql.conf" + regexp: ^.*include\s=\s'.*'.*$ + state: present + +- name: Postgres -- Ensuring that PostgreSQL is enabled and started. service: name: postgresql enabled: yes - state: started + state: restarted - name: Postgres -- Ensuring that Postgres is available before continuing. wait_for: @@ -44,6 +71,7 @@ postgresql_user: db: postgres encrypted: yes + login_unix_socket: "{{ pleroma_postgres_unix_socket_dir }}" name: "{{ pleroma.config.db.user }}" password: "{{ pleroma.config.db.password }}" state: present @@ -55,6 +83,7 @@ postgresql_db: conn_limit: "20" encoding: UTF-8 + login_unix_socket: "{{ pleroma_postgres_unix_socket_dir }}" name: "{{ pleroma.config.db.name }}" owner: "{{ pleroma.config.db.user }}" state: present @@ -66,6 +95,7 @@ postgresql_ext: name: "{{ item }}" db: "{{ pleroma.config.db.name }}" + login_unix_socket: "{{ pleroma_postgres_unix_socket_dir }}" state: present loop: - citext diff --git a/templates/etc_postgresql_confd_postgresql_override.conf b/templates/etc_postgresql_confd_postgresql_override.conf new file mode 100644 index 0000000..3b6683f --- /dev/null +++ b/templates/etc_postgresql_confd_postgresql_override.conf @@ -0,0 +1,24 @@ +#------------------------------------------------------------------------------ +# CONNECTIONS AND AUTHENTICATION +#------------------------------------------------------------------------------ + +listen_addresses = 'localhost' +port = 5432 +unix_socket_directories = '{{ pleroma_postgres_unix_socket_dir }}' + +#------------------------------------------------------------------------------ +# REPORTING AND LOGGING +#------------------------------------------------------------------------------ + +log_destination = 'stderr' +logging_collector = on +log_directory = '{{ pleroma_postgres_log_dir }}' +log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' +log_file_mode = 0600 +log_truncate_on_rotation = off +log_rotation_age = 1d +log_rotation_size = 5MB +log_min_messages = info +log_min_error_statement = error +log_min_duration_statement = 1000 +log_timezone = 'UTC' diff --git a/vars/main.yml b/vars/main.yml index 989253d..5b05c51 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -3,3 +3,9 @@ pleroma_ssl_folder: /etc/ssl/pleroma pleroma_ssl_privateKeyPath: "{{ pleroma_ssl_folder }}/pleroma.key" pleroma_ssl_csrPath: "{{ pleroma_ssl_folder }}/pleroma.csr" pleroma_ssl_selfSignedCertPath: "{{ pleroma_ssl_folder }}/pleroma.crt" + +pleroma_postgres_log_dir: /var/log/postgresql +pleroma_postgres_base_conf: /etc/postgresql +pleroma_postgres_confd: "{{ pleroma_postgres_base_conf }}/conf.d" +pleroma_postgres_confd_symlink: /var/lib/postgresql/11/data/pg_conf.d +pleroma_postgres_unix_socket_dir: /var/run/postgresql