Skip to content

Commit b8c6cb9

Browse files
committed
install plrust in AMI
1 parent 9cbe44b commit b8c6cb9

File tree

4 files changed

+98
-1
lines changed

4 files changed

+98
-1
lines changed

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 = '/tmp'
697+
696698
#dynamic_library_path = '$libdir'
697699
#gin_fuzzy_search_limit = 0
698700

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
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+
- postgresql-server-dev-{{ postgresql_major }}
19+
state: present
20+
update_cache: yes
21+
22+
- name: plrust - install Rust
23+
shell: |
24+
wget -qO- https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain={{ plrust_language_version }}
25+
echo 'source "$HOME/.cargo/env"' >> $HOME/.bashrc
26+
args:
27+
creates: "$HOME/.cargo"
28+
29+
- name: plrust - install Rust toolchain and set default
30+
shell: |
31+
source $HOME/.cargo/env
32+
rustup toolchain install {{ plrust_language_version }}
33+
rustup default {{ plrust_language_version }}
34+
args:
35+
executable: /bin/bash
36+
37+
- name: plrust - add components and target
38+
shell: |
39+
source $HOME/.cargo/env
40+
rustup component add llvm-tools-preview rustc-dev
41+
rustup target install x86_64-unknown-linux-gnu
42+
args:
43+
executable: /bin/bash
44+
45+
- name: plrust - install cargo-pgrx and initialize
46+
shell: |
47+
source $HOME/.cargo/env
48+
cargo install cargo-pgrx --locked
49+
cargo pgrx init --pg{{ postgresql_major }} /usr/bin/pg_config
50+
args:
51+
executable: /bin/bash
52+
53+
- name: plrust - clone plrust
54+
git:
55+
repo: https://github.com/tcdi/plrust
56+
dest: /tmp/plrust
57+
version: v{{ plrust_release }}
58+
59+
60+
- name: plrust - move plrustc binary to .cargo/bin
61+
command:
62+
cmd: mv "/tmp/plrust/plrust/build/bin/plrustc" "$HOME/.cargo/bin/"
63+
warn: false
64+
65+
- name: plrust - build plrust
66+
shell: |
67+
source $HOME/.cargo/env
68+
export PG_VER="{{ postgresql_major }}"
69+
70+
if [[ "{{ platform }}" == "arm64" ]]; then
71+
STD_TARGETS="aarch64-postgres-linux-gnu"
72+
elif [[ "{{ platform }}" == "amd64" ]]; then
73+
STD_TARGETS="amd64-postgres-linux-gnu"
74+
else
75+
echo "Unsupported platform: $platform"
76+
exit 1
77+
fi
78+
79+
./build
80+
args:
81+
executable: /bin/bash
82+
chdir: "/tmp/plrust/plrust"
83+
84+
- name: plrust - install plrust
85+
shell: |
86+
source $HOME/.cargo/env
87+
cargo pgrx install --release --features trusted -c /usr/bin/pg_config
88+
args:
89+
executable: /bin/bash

ansible/tasks/setup-extensions.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@
8989
- name: Install Trusted Language Extensions
9090
import_tasks: tasks/postgres-extensions/29-pg_tle.yml
9191

92+
- name: Install plrust
93+
import_tasks: tasks/postgres-extensions/30-plrust.yml
94+
9295
- name: Verify async task status
9396
import_tasks: tasks/postgres-extensions/99-finish_async_tasks.yml
9497
when: async_mode

ansible/vars.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,6 @@ pgvector_release_checksum: sha256:b76cf84ddad452cc880a6c8c661d137ddd8679c000a163
134134

135135
pg_tle_release: "1.0.4"
136136
pg_tle_release_checksum: sha256:679559584d83fb629c3b56825849fca4ff1fa3355b350aaaf8aa0b7b3460b08a
137+
138+
plrust_release: "1.2.3"
139+
plrust_language_version: "1.70.0"

0 commit comments

Comments
 (0)