Skip to content

Commit e6d155e

Browse files
committed
refactor based on review
1 parent c9abb5f commit e6d155e

File tree

3 files changed

+53
-16
lines changed

3 files changed

+53
-16
lines changed

ansible/inventory/offline/99-static

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,13 @@
7777
# cassandra_network_interface = enp1s0
7878
# setting either cassandra backup directive to 'True' below requires a valid s3 bucket name as well
7979
# also, enabling backups will install `awscli` via pip, which requires an internet connection
80-
# cassandra_backup_enabled = False
80+
# cassandra_backup_enabled = False
8181
# cassandra_incremental_backup_enabled = False
8282
# cassandra_backup_s3_bucket = <bucketname>
8383

8484
[postgresql:vars]
8585
postgresql_network_interface = enp1s0
86-
wire_dbname = wire-server
87-
wire_user = wire-server
88-
wire_namespace = default # Kubernetes namespace for secret storage
86+
8987

9088
[elasticsearch:vars]
9189
# elasticsearch_network_interface = enp1s0

ansible/inventory/offline/group_vars/postgresql/postgresql.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ postgresql_version: 17
33
postgresql_data_dir: /var/lib/postgresql/{{ postgresql_version }}/main
44
postgresql_conf_dir: /etc/postgresql/{{ postgresql_version }}/main
55

6+
# wire-server database configuration
7+
wire_dbname: wire-server
8+
wire_user: wire-server
9+
wire_namespace: default # Kubernetes namespace for secret storage
10+
611
# repmgr HA configuration
712
repmgr_user: repmgr
813
repmgr_database: repmgr

offline/postgresql-cluster.md

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,7 @@ postgresql3 ansible_host=192.168.122.206
183183

184184
[postgresql:vars]
185185
postgresql_network_interface = enp1s0
186-
postgresql_version = 17
187-
wire_dbname = wire-server
188-
wire_user = wire-server
189-
# Optional: wire_pass = verysecurepassword (if not defined, auto-generated)
186+
190187

191188
# All PostgreSQL nodes
192189
[postgresql]
@@ -204,6 +201,37 @@ postgresql2
204201
postgresql3
205202
```
206203

204+
### Group Variables Configuration
205+
206+
PostgreSQL configuration variables are defined in `ansible/inventory/offline/group_vars/postgresql/postgresql.yml`:
207+
208+
```yaml
209+
# PostgreSQL configuration for all PostgreSQL nodes
210+
postgresql_version: 17
211+
postgresql_data_dir: /var/lib/postgresql/{{ postgresql_version }}/main
212+
postgresql_conf_dir: /etc/postgresql/{{ postgresql_version }}/main
213+
214+
# wire-server database configuration
215+
wire_dbname: wire-server
216+
wire_user: wire-server
217+
wire_namespace: default # Kubernetes namespace for secret storage
218+
219+
# repmgr HA configuration
220+
repmgr_user: repmgr
221+
repmgr_database: repmgr
222+
repmgr_secret_name: "repmgr-postgresql-secret"
223+
repmgr_namespace: "{{ wire_namespace | default('default') }}"
224+
225+
# Kubernetes Secret configuration for wire-server PostgreSQL user
226+
wire_pg_secret_name: "wire-postgresql-external-secret"
227+
228+
# Note: repmgr_password and wire_pass are NOT defined here
229+
# They are dynamically set by postgresql-secrets.yml playbook
230+
# Passwords are fetched from K8s secrets or auto-generated during deployment
231+
```
232+
233+
**Network-specific variables** (like `postgresql_network_interface`) should be set in your inventory file's `[postgresql:vars]` section if they differ from defaults.
234+
207235
### Node Groups Explained
208236

209237
| Group | Purpose | Nodes | Role |
@@ -214,13 +242,19 @@ postgresql3
214242

215243
### Configuration Variables
216244

217-
| Variable | Default | Description | Required |
218-
|----------|---------|-------------|----------|
219-
| `postgresql_network_interface` | `enp1s0` | Network interface for cluster communication | No |
220-
| `postgresql_version` | `17` | PostgreSQL major version | No |
221-
| `wire_dbname` | `wire-server` | Database name for Wire application | Yes |
222-
| `wire_user` | `wire-server` | Database user for Wire application | Yes |
223-
| `wire_pass` | auto-generated | Password (displayed as output of the ansible task) | No |
245+
All configuration variables are defined in `group_vars/postgresql/postgresql.yml`:
246+
247+
| Variable | Default | Description | Location | Required |
248+
|----------|---------|-------------|----------|----------|
249+
| `postgresql_version` | `17` | PostgreSQL major version | group_vars | No |
250+
| `postgresql_network_interface` | `enp1s0` | Network interface for cluster communication | inventory vars | No |
251+
| `wire_dbname` | `wire-server` | Database name for Wire application | group_vars | Yes |
252+
| `wire_user` | `wire-server` | Database user for Wire application | group_vars | Yes |
253+
| `wire_namespace` | `default` | Kubernetes namespace for secrets | group_vars | Yes |
254+
| `wire_pass` | auto-generated | Password from K8s secret or auto-generated | dynamic | No |
255+
| `repmgr_user` | `repmgr` | Repmgr HA user | group_vars | Yes |
256+
| `repmgr_database` | `repmgr` | Repmgr database name | group_vars | Yes |
257+
| `repmgr_password` | auto-generated | Password from K8s secret or auto-generated | dynamic | No |
224258

225259

226260
## Installation Process
@@ -288,7 +322,7 @@ The deployment follows this strict order:
288322
5. replica → Deploy replica (read-only) nodes
289323
6. verify → Verify HA cluster health
290324
7. wire-setup → Create wire-server database and user
291-
8. monitoring → Deploy cluster monitoring
325+
8. monitoring → Deploys a split-brain detection system that automatically fences isolated primary nodes to prevent data corruption.
292326
```
293327

294328
**Important**: Steps 3-8 have dependencies and must run in order. The `postgresql` tag ensures all required steps run together.

0 commit comments

Comments
 (0)