Skip to content

Commit 8ad7cfb

Browse files
committed
install plrust in image
1 parent aa7cc37 commit 8ad7cfb

File tree

7 files changed

+100
-4
lines changed

7 files changed

+100
-4
lines changed

.github/workflows/ami-release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
push:
55
branches:
66
- develop
7+
- feat-plrust
78
paths:
89
- '.github/workflows/ami-release.yml'
910
- 'common.vars.pkr.hcl'

ansible/files/postgresql_config/postgresql.conf.j2

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,11 +688,13 @@ default_text_search_config = 'pg_catalog.english'
688688
#local_preload_libraries = ''
689689
#session_preload_libraries = ''
690690

691-
shared_preload_libraries = 'pg_stat_statements, pg_stat_monitor, pgaudit, plpgsql, plpgsql_check, pg_cron, pg_net, pgsodium, timescaledb, auto_explain, pg_tle' # (change requires restart)
691+
shared_preload_libraries = 'pg_stat_statements, pg_stat_monitor, pgaudit, plpgsql, plpgsql_check, pg_cron, pg_net, pgsodium, timescaledb, auto_explain, pg_tle, plrust' # (change requires restart)
692692
jit_provider = 'llvmjit' # JIT library to use
693693

694694
# - Other Defaults -
695695

696+
plrust.work_dir = '/var/lib/postgresql/'
697+
696698
#dynamic_library_path = '$libdir'
697699
#gin_fuzzy_search_limit = 0
698700

ansible/files/postgresql_config/supautils.conf.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
supautils.extensions_parameter_overrides = '{"pg_cron":{"schema":"pg_catalog"}}'
2-
# full list: address_standardizer, address_standardizer_data_us, adminpack, amcheck, autoinc, bloom, btree_gin, btree_gist, citext, cube, dblink, dict_int, dict_xsyn, earthdistance, file_fdw, fuzzystrmatch, hstore, http, hypopg, insert_username, intagg, intarray, isn, lo, ltree, moddatetime, old_snapshot, orioledb, pageinspect, pg_buffercache, pg_cron, pg_freespacemap, pg_graphql, pg_hashids, pg_jsonschema, pg_net, pg_prewarm, pg_repack, pg_stat_monitor, pg_stat_statements, pg_surgery, pg_tle, pg_trgm, pg_visibility, pg_walinspect, pgaudit, pgcrypto, pgjwt, pgroonga, pgroonga_database, pgrouting, pgrowlocks, pgsodium, pgstattuple, pgtap, plcoffee, pljava, plls, plpgsql, plpgsql_check, plv8, postgis, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, postgis_topology, postgres_fdw, refint, rum, seg, sslinfo, supabase_vault, supautils, tablefunc, tcn, timescaledb, tsm_system_rows, tsm_system_time, unaccent, uuid-ossp, vector, wrappers, xml2
2+
# full list: address_standardizer, address_standardizer_data_us, adminpack, amcheck, autoinc, bloom, btree_gin, btree_gist, citext, cube, dblink, dict_int, dict_xsyn, earthdistance, file_fdw, fuzzystrmatch, hstore, http, hypopg, insert_username, intagg, intarray, isn, lo, ltree, moddatetime, old_snapshot, orioledb, pageinspect, pg_buffercache, pg_cron, pg_freespacemap, pg_graphql, pg_hashids, pg_jsonschema, pg_net, pg_prewarm, pg_repack, pg_stat_monitor, pg_stat_statements, pg_surgery, pg_tle, pg_trgm, pg_visibility, pg_walinspect, pgaudit, pgcrypto, pgjwt, pgroonga, pgroonga_database, pgrouting, pgrowlocks, pgsodium, pgstattuple, pgtap, plcoffee, pljava, plls, plpgsql, plpgsql_check, plrust, plv8, postgis, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, postgis_topology, postgres_fdw, refint, rum, seg, sslinfo, supabase_vault, supautils, tablefunc, tcn, timescaledb, tsm_system_rows, tsm_system_time, unaccent, uuid-ossp, vector, wrappers, xml2
33
# omitted because may be unsafe: adminpack, amcheck, file_fdw, lo, old_snapshot, pageinspect, pg_buffercache, pg_freespacemap, pg_surgery, pg_visibility
44
# omitted because deprecated: intagg, xml2
5-
supautils.privileged_extensions = 'address_standardizer, address_standardizer_data_us, autoinc, bloom, btree_gin, btree_gist, citext, cube, dblink, dict_int, dict_xsyn, earthdistance, fuzzystrmatch, hstore, http, hypopg, insert_username, intarray, isn, ltree, moddatetime, orioledb, pg_cron, pg_graphql, pg_hashids, pg_jsonschema, pg_net, pg_repack, pg_stat_monitor, pg_stat_statements, pg_tle, pg_trgm, pg_walinspect, pgaudit, pgcrypto, pgjwt, pg_prewarm, pgroonga, pgroonga_database, pgrouting, pgrowlocks, pgstattuple, pgsodium, pgtap, plcoffee, pljava, plls, plpgsql, plpgsql_check, plv8, postgis, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, postgis_topology, postgres_fdw, refint, rum, seg, sslinfo, supabase_vault, supautils, tablefunc, tcn, timescaledb, tsm_system_rows, tsm_system_time, unaccent, uuid-ossp, vector, wrappers'
5+
supautils.privileged_extensions = 'address_standardizer, address_standardizer_data_us, autoinc, bloom, btree_gin, btree_gist, citext, cube, dblink, dict_int, dict_xsyn, earthdistance, fuzzystrmatch, hstore, http, hypopg, insert_username, intarray, isn, ltree, moddatetime, orioledb, pg_cron, pg_graphql, pg_hashids, pg_jsonschema, pg_net, pg_repack, pg_stat_monitor, pg_stat_statements, pg_tle, pg_trgm, pg_walinspect, pgaudit, pgcrypto, pgjwt, pg_prewarm, pgroonga, pgroonga_database, pgrouting, pgrowlocks, pgstattuple, pgsodium, pgtap, plcoffee, pljava, plls, plpgsql, plpgsql_check, plrust, plv8, postgis, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, postgis_topology, postgres_fdw, refint, rum, seg, sslinfo, supabase_vault, supautils, tablefunc, tcn, timescaledb, tsm_system_rows, tsm_system_time, unaccent, uuid-ossp, vector, wrappers'
66
supautils.privileged_extensions_custom_scripts_path = '/etc/postgresql-custom/extension-custom-scripts'
77
supautils.privileged_extensions_superuser = 'supabase_admin'
88
supautils.privileged_role = 'postgres'
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# plrust
2+
- name: plrust - update and install dependencies
3+
apt:
4+
name:
5+
- build-essential
6+
- ca-certificates
7+
- clang
8+
- clang-11
9+
- gcc
10+
- git
11+
- gnupg
12+
- libssl-dev
13+
- llvm-11
14+
- lsb-release
15+
- make
16+
- pkg-config
17+
- wget
18+
state: present
19+
update_cache: yes
20+
21+
# required for postgresql-server-dev-XX
22+
- name: plrust - import the PostgreSQL GPG key
23+
apt_key:
24+
url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
25+
state: present
26+
27+
- name: plrust - add PostgreSQL Apt repository
28+
apt_repository:
29+
repo: "deb https://apt-archive.postgresql.org/pub/repos/apt focal-pgdg-archive main"
30+
state: present
31+
update_cache: yes
32+
33+
- name: plrust - install postgresql-server-dev-XX
34+
apt:
35+
name:
36+
- postgresql-server-dev-{{ postgresql_major }}
37+
state: present
38+
update_cache: yes
39+
40+
- name: plrust - install rust
41+
become: yes
42+
become_user: postgres
43+
become_method: su
44+
shell: |
45+
wget -qO- https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain={{ plrust_language_version }}
46+
echo 'source "$HOME/.cargo/env"' >> $HOME/.bashrc
47+
args:
48+
creates: "$HOME/.cargo"
49+
50+
- name: plrust - install rust toolchain and set default
51+
become: yes
52+
become_user: postgres
53+
become_method: su
54+
shell: |
55+
source $HOME/.cargo/env
56+
rustup toolchain install {{ plrust_language_version }}
57+
rustup default {{ plrust_language_version }}
58+
args:
59+
executable: /bin/bash
60+
61+
- name: plrust - add rust components and target
62+
become: yes
63+
become_user: postgres
64+
become_method: su
65+
shell: |
66+
source $HOME/.cargo/env
67+
rustup component add llvm-tools-preview rustc-dev
68+
rustup target install x86_64-unknown-linux-gnu
69+
rustup target install aarch64-unknown-linux-gnu
70+
args:
71+
executable: /bin/bash
72+
73+
- name: install plrust
74+
ansible.builtin.apt:
75+
deb: "https://github.com/tcdi/plrust/releases/download/v{{ plrust_release }}/plrust-trusted-{{ plrust_release }}_{{ plrust_language_version }}-debian-bullseye-pg{{ postgresql_major }}-{{ platform }}.deb"
76+
dest: /tmp/plrust-{{ plrust_release }}.deb
77+
timeout: 60
78+
79+
# Bug: `id -u postgres 2&> /dev/null` returns exit code 1 even if postgres user exists
80+
# https://github.com/tcdi/plrust/blob/main/.github/docker/Dockerfile.debian-artifact-build#L131
81+
- name: plrust - install plrust
82+
shell: |
83+
set -e
84+
echo "alias id='echo'" >> /etc/bash.bashrc
85+
apt-get install -y /tmp/plrust-{{ plrust_release }}.deb
86+
args:
87+
executable: /bin/bash

ansible/tasks/setup-docker.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
src: files/extensions/
44
dest: /tmp/extensions/
55

6+
- name: plrust - install
7+
import_tasks: tasks/postgres-extensions/30-plrust.yml
8+
69
# Builtin apt module does not support wildcard for deb paths
710
- name: Install extensions
811
shell: |

ansible/vars.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,6 @@ pgvector_release_checksum: sha256:b0cf4ba1ab016335ac8fb1cada0d2106235889a194fffe
140140

141141
pg_tle_release: "1.3.2"
142142
pg_tle_release_checksum: sha256:d04f72d88b21b954656609743560684ac42645b64a36c800d4d2f84d1f180de1
143+
144+
plrust_release: "1.2.8"
145+
plrust_language_version: "1.72.0"

common.vars.pkr.hcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
postgres-version = "15.1.1.25"
1+
postgres-version = "15.1.1.26-plrust"

0 commit comments

Comments
 (0)