Skip to content
80 changes: 0 additions & 80 deletions ansible/tasks/setup-docker.yml

This file was deleted.

300 changes: 0 additions & 300 deletions ansible/tasks/setup-postgres.yml
Original file line number Diff line number Diff line change
@@ -1,123 +1,3 @@
- name: Postgres - copy package
copy:
src: files/postgres/
dest: /tmp/build/
when: debpkg_mode

- name: Postgres - add PPA
apt_repository:
repo: "deb [ trusted=yes ] file:///tmp/build ./"
state: present
when: debpkg_mode

- name: Postgres - install commons
apt:
name: postgresql-common
install_recommends: no
when: debpkg_mode

- name: Do not create main cluster
shell:
cmd: sed -ri 's/#(create_main_cluster) .*$/\1 = false/' /etc/postgresql-common/createcluster.conf
when: debpkg_mode

- name: Postgres - install server
apt:
name: postgresql-{{ postgresql_major }}={{ postgresql_release }}-1.pgdg24.04+1
install_recommends: no
when: debpkg_mode

- name: Postgres - remove PPA
apt_repository:
repo: "deb [ trusted=yes ] file:///tmp/build ./"
state: absent
when: debpkg_mode

- name: Postgres - cleanup package
file:
path: /tmp/build
state: absent
when: debpkg_mode

- name: install locales
apt:
name: locales
state: present
become: yes
when: stage2_nix

- name: configure locales
command: echo "C.UTF-8 UTF-8" > /etc/locale.gen && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
become: yes
when: stage2_nix

- name: locale-gen
command: sudo locale-gen
when: stage2_nix

- name: update-locale
command: sudo update-locale
when: stage2_nix

- name: Create symlink to /usr/lib/postgresql/bin
shell:
cmd: ln -s /usr/lib/postgresql/{{ postgresql_major }}/bin /usr/lib/postgresql/bin
when: debpkg_mode

- name: create ssl-cert group
group:
name: ssl-cert
state: present
when: nixpkg_mode
# the old method of installing from debian creates this group, but we must create it explicitly
# for the nix built version

- name: create postgres group
group:
name: postgres
state: present
when: nixpkg_mode

- name: create postgres user
shell: adduser --system --home /var/lib/postgresql --no-create-home --shell /bin/bash --group --gecos "PostgreSQL administrator" postgres
args:
executable: /bin/bash
become: yes
when: nixpkg_mode

- name: add postgres user to postgres group
shell: usermod -a -G ssl-cert postgres
args:
executable: /bin/bash
become: yes
when: nixpkg_mode

- name: Create relevant directories
file:
path: '{{ item }}'
recurse: yes
state: directory
owner: postgres
group: postgres
with_items:
- '/home/postgres'
- '/var/log/postgresql'
- '/var/lib/postgresql'
when: debpkg_mode or nixpkg_mode

- name: Allow adminapi to write custom config
file:
path: '{{ item }}'
recurse: yes
state: directory
owner: postgres
group: postgres
mode: 0775
with_items:
- '/etc/postgresql'
- '/etc/postgresql-custom'
when: debpkg_mode or nixpkg_mode

- name: create placeholder config files
file:
path: '/etc/postgresql-custom/{{ item }}'
Expand All @@ -130,193 +10,13 @@
- 'custom-overrides.conf'
when: debpkg_mode or nixpkg_mode

# Move Postgres configuration files into /etc/postgresql
# Add postgresql.conf
- name: import postgresql.conf
template:
src: files/postgresql_config/postgresql.conf.j2
dest: /etc/postgresql/postgresql.conf
group: postgres
when: debpkg_mode or nixpkg_mode

# Add pg_hba.conf
- name: import pg_hba.conf
template:
src: files/postgresql_config/pg_hba.conf.j2
dest: /etc/postgresql/pg_hba.conf
group: postgres
when: debpkg_mode or nixpkg_mode

# Add pg_ident.conf
- name: import pg_ident.conf
template:
src: files/postgresql_config/pg_ident.conf.j2
dest: /etc/postgresql/pg_ident.conf
group: postgres
when: debpkg_mode or nixpkg_mode

# Add custom config for read replicas set up
- name: Move custom read-replica.conf file to /etc/postgresql-custom/read-replica.conf
template:
src: "files/postgresql_config/custom_read_replica.conf.j2"
dest: /etc/postgresql-custom/read-replica.conf
mode: 0664
owner: postgres
group: postgres
when: debpkg_mode or nixpkg_mode

# Install extensions before init
- name: Install Postgres extensions
import_tasks: tasks/setup-docker.yml
when: debpkg_mode or stage2_nix

#stage 2 postgres tasks
- name: stage2 postgres tasks
import_tasks: tasks/stage2-setup-postgres.yml
when: stage2_nix

# init DB
- name: Create directory on data volume
file:
path: '{{ item }}'
recurse: yes
state: directory
owner: postgres
group: postgres
mode: 0750
with_items:
- "/data/pgdata"
when: debpkg_mode or nixpkg_mode

- name: Link database data_dir to data volume directory
file:
src: "/data/pgdata"
path: "/var/lib/postgresql/data"
state: link
force: yes
when: debpkg_mode or nixpkg_mode

- name: Initialize the database
become: yes
become_user: postgres
shell: /usr/lib/postgresql/bin/pg_ctl -D /var/lib/postgresql/data initdb -o "--allow-group-access" -o "--username=supabase_admin"
vars:
ansible_command_timeout: 60
when: debpkg_mode

- name: Make sure .bashrc exists
file:
path: /var/lib/postgresql/.bashrc
state: touch
owner: postgres
group: postgres
when: nixpkg_mode

- name: Check psql_version and modify supautils.conf and postgresql.conf if necessary
block:
- name: Check if psql_version is psql_orioledb
set_fact:
is_psql_oriole: "{{ psql_version in ['psql_orioledb-17'] }}"
is_psql_17: "{{ psql_version in ['psql_17'] }}"

- name: Initialize the database stage2_nix (non-orioledb)
become: yes
become_user: postgres
shell: source /var/lib/postgresql/.bashrc && /usr/lib/postgresql/bin/pg_ctl -D /var/lib/postgresql/data initdb -o "--allow-group-access" -o "--username=supabase_admin"
args:
executable: /bin/bash
environment:
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8
LC_CTYPE: en_US.UTF-8
LOCALE_ARCHIVE: /usr/lib/locale/locale-archive
vars:
ansible_command_timeout: 60
when: stage2_nix and not is_psql_oriole and not is_psql_17

- name: Initialize the database stage2_nix (orioledb)
become: yes
become_user: postgres
shell: >
source /var/lib/postgresql/.bashrc && /usr/lib/postgresql/bin/pg_ctl -D /var/lib/postgresql/data initdb
-o "--allow-group-access"
-o "--username=supabase_admin"
-o "--locale-provider=icu"
-o "--encoding=UTF-8"
-o "--icu-locale=en_US.UTF-8"
args:
executable: /bin/bash
environment:
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8
LC_CTYPE: en_US.UTF-8
LOCALE_ARCHIVE: /usr/lib/locale/locale-archive
vars:
ansible_command_timeout: 60
when: stage2_nix and (is_psql_oriole or is_psql_17)

- name: copy PG systemd unit
template:
src: files/postgresql_config/postgresql.service.j2
dest: /etc/systemd/system/postgresql.service
when: debpkg_mode or stage2_nix

- name: copy optimizations systemd unit
template:
src: files/database-optimizations.service.j2
dest: /etc/systemd/system/database-optimizations.service
when: debpkg_mode or stage2_nix

- name: initialize pg required state
become: yes
shell: |
mkdir -p /run/postgresql
chown -R postgres:postgres /run/postgresql
when: stage2_nix and qemu_mode is defined

- name: Restart Postgres Database without Systemd
become: yes
become_user: postgres
shell: |
source /var/lib/postgresql/.bashrc
/usr/lib/postgresql/bin/pg_ctl -D /var/lib/postgresql/data start
environment:
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8
LC_CTYPE: en_US.UTF-8
LOCALE_ARCHIVE: /usr/lib/locale/locale-archive
when: stage2_nix


# Reload
- name: System - systemd reload
systemd:
enabled: yes
name: postgresql
daemon_reload: yes
when: debpkg_mode or stage2_nix


- name: Add LOCALE_ARCHIVE to .bashrc
lineinfile:
dest: "/var/lib/postgresql/.bashrc"
line: 'export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive'
create: yes
become: yes
when: nixpkg_mode

- name: Add LANG items to .bashrc
lineinfile:
dest: "/var/lib/postgresql/.bashrc"
line: "{{ item }}"
loop:
- 'export LANG="en_US.UTF-8"'
- 'export LANGUAGE="en_US.UTF-8"'
- 'export LC_ALL="en_US.UTF-8"'
- 'export LANG="en_US.UTF-8"'
- 'export LC_CTYPE="en_US.UTF-8"'
become: yes
when: nixpkg_mode
Loading
Loading