feat: add shared pgsql instance (#328)

- add shared pgsql instance
- use patroni

Reviewed-on: https://git.query.consul/unkinben/puppet-prod/pulls/328
This commit is contained in:
Ben Vincent 2025-06-29 17:25:59 +10:00
parent 99b312669b
commit d1e63ad18b
3 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,3 @@
profiles::sql::patroni::superuser_password: ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEwDQYJKoZIhvcNAQEBBQAEggEAGYcNr4b5SHlNF1v77ExV4bzITYfqQtFPUsqqH9iVD7urUtjEcNH3QJPUtJRIAglByjx5KxB5YVkQp5VRE3nb5ZrhQN3sSgBi0iRNbZaX7S4KVZCfUN+8ksl+UO3LqyaZPcBu7HRTOBEiuuXAEepSgLOk/Bn7gRPrwZtxdVoefxBT2s9WA4b8v0DV1JixYUSo+TVpJdQIRlvZIZUa4SPl9tDpv1eI8IDY7eSMa8wuceSlvLT9a4ADstD4mI4dfhuoa0HZXSBPsTPpMBdtN2gmXR/rX8WvQ0oiCTvPI0qv8R3J6x22bufI8Ph+xcQiDgBgRaHGVl0bbvCGcozX9kRHtTBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCNCAOWU34Ty+/IdzGXqInAgDAzzjKG7/exifZE2SkyovA/iWzwmc1Z2Kptw0xladrM4YhrnOt66JIka6Yo1S94k4o=]
profiles::sql::patroni::replication_password: ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEwDQYJKoZIhvcNAQEBBQAEggEAne8vHHDkqrzEQLRXW+nQn5ZviLn3uAGi2a2RM+FGY809k3ortUGjZL+GIGe4Gu47mMTQOuuC2kuxzu4iqRzoj/D3Usldlx1LSWf60GrVLwX86Rp9h+9FuVNEqG17r6bA9iTp99ZrZ0tYFT9Ib7Gfo7Tq4Ke80qI4q/vDDAaJXtv19s8Z51miYD7epC3bysjOVLtRnU7y6Cwod+yBDE768KVmy6fVpGrM4Z6OK9ppYXfhvxrtqSuu5jFZyy/tBepRKPu0NcD7zzCeKYGNBaF6p77EsExAHamh76arlYyIOK+31ZM5ujvzL/d2JYKdIX5W0wsrn828NE1xOIDuxrMxXTBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBD8sRkp64N+Gzp4l3UUMEwjgDCSbEQr31HEWZBRLkDXjuOz9P+njEPdRCXELY2ARxoIIylhGw3dmxSzfRyh/EyELt4=]
profiles::sql::patroni::postgres_exporter_pass: ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEwDQYJKoZIhvcNAQEBBQAEggEALkVTQluDB82R+V7jQXgzaNVvMsbU2bxEPHnirYn3qJ05zobJqPjKMl0bDveNfMBCI2wM9vXTiEKeIgqFI4w99T5dOc4n+uRUcVkz7yNcxXTrIbaVF5PKVDASylEmvqRJHj3i2IU8WgePKc6VcvVGf3Wv6nh/uMcKXU1//shpV/04MqL7zhDdSEbiOam2Ki02UKaT4FMQsAkhubDPQjgfbIiWUY1+kLGmvCcG3kd1ET/vzWYNO7EPc6xk7+EDNBJ9nIf2vOsGRW1h/xLuRiB7dtUDovjgaJXwfJ+jpAK2JwrxE8nmmbnFcxxTt7tBAx0L50R61gwRVnUnPWXC4lX3ozBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDSBkjfKfXTt83PnrbvMq7ggDBLWwqQ0x0OheiIefkEZc7EKc5p04OugadO5rfuHieZ0vu4lAh24OoHpy/SlqONh4I=]

View File

@ -0,0 +1,47 @@
---
hiera_include:
- profiles::sql::patroni
profiles::packages::include:
python3-devel: {}
libpq5-devel: {}
postgresql-devel: {}
postgresql_config_entries:
max_connections: 300
shared_buffers: '256MB'
profiles::sql::patroni::cluster_name: "patroni-shared-%{facts.environment}"
profiles::sql::patroni::postgres_exporter_enabled: true
profiles::sql::patroni::postgres_exporter_user: postgres_exporter
profiles::sql::patroni::pgsql_version: "17"
python::manage_dev_package: false
profiles::consul::client::node_rules:
- resource: service
segment: "%{hiera('profiles::sql::patroni::cluster_name')}"
disposition: write
- resource: service_prefix
segment: "%{hiera('profiles::sql::patroni::cluster_name')}"
disposition: write
- resource: key_prefix
segment: "service/%{hiera('profiles::sql::patroni::cluster_name')}"
disposition: write
- resource: session_prefix
segment: ""
disposition: write
profiles::yum::global::repos:
postgresql-17:
name: postgresql-17
descr: postgresql-17 repository
target: /etc/yum.repos.d/postgresql.repo
baseurl: https://packagerepo.service.consul/postgresql/rhel%{facts.os.release.major}/17-daily/%{facts.os.architecture}/os
gpgkey: https://packagerepo.service.consul/postgresql/rhel%{facts.os.release.major}/17-daily/%{facts.os.architecture}/os/PGDG-RPM-GPG-KEY-RHEL
postgresql-common:
name: postgresql-common
descr: postgresql-common repository
target: /etc/yum.repos.d/postgresql.repo
baseurl: https://packagerepo.service.consul/postgresql/rhel%{facts.os.release.major}/common-daily/%{facts.os.architecture}/os
gpgkey: https://packagerepo.service.consul/postgresql/rhel%{facts.os.release.major}/common-daily/%{facts.os.architecture}/os/PGDG-RPM-GPG-KEY-RHEL

View File

@ -0,0 +1,10 @@
# a role to deploy the shared postgresql service
class roles::infra::sql::shared {
if $facts['firstrun'] {
include profiles::defaults
include profiles::firstrun::init
}else{
include profiles::defaults
include profiles::base
}
}