This playbook just tries to avoid trying to setup a Postgres 10 database with existing 9.x files, as that makes Postgres complain. Due to this, existing installs (still on 9.x) are detected and left on Postgres 9.x. They need to be upgraded to Postgres 10.x manually.
105 lines
3.5 KiB
YAML
105 lines
3.5 KiB
YAML
---
|
|
|
|
#
|
|
# Generic tasks, no matter what kind of server we're using (internal/external)
|
|
#
|
|
|
|
- name: Determine existing Postgres version (check PG_VERSION file)
|
|
stat:
|
|
path: "{{ matrix_postgres_data_path }}/PG_VERSION"
|
|
register: result_pg_version_stat
|
|
|
|
- name: Determine existing Postgres version (read PG_VERSION file)
|
|
slurp:
|
|
src: "{{ matrix_postgres_data_path }}/PG_VERSION"
|
|
register: result_pg_version
|
|
when: "result_pg_version_stat.stat.exists"
|
|
|
|
- name: Determine existing Postgres version (default to empty)
|
|
set_fact:
|
|
pg_version: ""
|
|
|
|
- name: Determine existing Postgres version (make sense of PG_VERSION file)
|
|
set_fact:
|
|
pg_version: "{{ result_pg_version['content']|b64decode|replace('\n', '') }}"
|
|
when: "result_pg_version_stat.stat.exists"
|
|
|
|
- name: Determine Postgres version to use (default to latest)
|
|
set_fact:
|
|
docker_postgres_image_to_use: "{{ docker_postgres_image_latest }}"
|
|
|
|
- name: Determine Postgres version to use (use 9.x, if detected)
|
|
set_fact:
|
|
docker_postgres_image_to_use: "{{ docker_postgres_image_v9 }}"
|
|
when: "pg_version.startswith('9.')"
|
|
|
|
# Even if we don't run the internal server, we still need this for running the CLI
|
|
- name: Ensure postgres Docker image is pulled
|
|
docker_image:
|
|
name: "{{ docker_postgres_image_to_use }}"
|
|
|
|
- name: Ensure Postgres environment variables file created
|
|
template:
|
|
src: "{{ role_path }}/templates/env/{{ item }}.j2"
|
|
dest: "{{ matrix_environment_variables_data_path }}/{{ item }}"
|
|
mode: 0640
|
|
with_items:
|
|
- "env-postgres-pgsql-docker"
|
|
- "env-postgres-server-docker"
|
|
|
|
- name: Ensure matrix-postgres-cli script created
|
|
template:
|
|
src: "{{ role_path }}/templates/usr-local-bin/matrix-postgres-cli.j2"
|
|
dest: "/usr/local/bin/matrix-postgres-cli"
|
|
mode: 0750
|
|
|
|
#
|
|
# Tasks related to setting up an internal postgres server
|
|
#
|
|
|
|
- name: Ensure postgres data path exists
|
|
file:
|
|
path: "{{ matrix_postgres_data_path }}"
|
|
state: directory
|
|
mode: 0700
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
when: "not matrix_postgres_use_external"
|
|
|
|
- name: Ensure matrix-postgres.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-postgres.service.j2"
|
|
dest: "/etc/systemd/system/matrix-postgres.service"
|
|
mode: 0644
|
|
when: "not matrix_postgres_use_external"
|
|
|
|
#
|
|
# Tasks related to getting rid of the internal postgres server (if it was previously enabled)
|
|
#
|
|
|
|
- name: Check existence of matrix-postgres service
|
|
stat: path="/etc/systemd/system/matrix-postgres.service"
|
|
register: matrix_postgres_service_stat
|
|
when: matrix_postgres_use_external
|
|
|
|
- name: Ensure matrix-postgres is stopped
|
|
service: name=matrix-postgres state=stopped daemon_reload=yes
|
|
when: "matrix_postgres_use_external and matrix_postgres_service_stat.stat.exists"
|
|
|
|
- name: Ensure matrix-postgres.service doesn't exist
|
|
file:
|
|
path: "/etc/systemd/system/matrix-postgres.service"
|
|
state: absent
|
|
when: "matrix_postgres_use_external and matrix_postgres_service_stat.stat.exists"
|
|
|
|
- name: Check existence of matrix-postgres local data path
|
|
stat: path="{{ matrix_postgres_data_path }}"
|
|
register: matrix_postgres_data_path_stat
|
|
when: matrix_postgres_use_external
|
|
|
|
# We just want to notify the user. Deleting data is too destructive.
|
|
- name: Notify if matrix-postgres local data remains
|
|
debug:
|
|
msg: "Note: You are not using a local PostgreSQL database, but some old data remains from before in {{ matrix_postgres_data_path }}. Feel free to delete that."
|
|
when: "matrix_postgres_use_external and matrix_postgres_data_path_stat.stat.exists"
|