Ansible roles: - act_runner/defaults: set act_runner_name to inventory_hostname (was hardcoded to iklim-test-app); added vault_gitea_runner_token to vault.yml - prod/group_vars/all: restructured from flat files to all/ directory; added act_runner_labels override (prod-runner,ubuntu-24.04,hostname); added storagebox_managed_directories; added swarm_manager_ip and other prod-specific vars - prod/roles/db_stack: prod-specific db_node tasks using StorageBox paths (/mnt/storagebox/db/...) instead of local paths - docker/tasks: split firewalld loop into all-nodes (Swarm ports) and app-only (80/443) tasks - swarm/tasks: added --advertise-addr private_ip to join commands for correct multi-homed node advertisement - hardening/tasks: corrected firewalld drop zone configuration - node_dirs/tasks: added /opt/iklimco/vault/data for Vault Raft volume - db_stack/tasks/app_node: updated stale comment (removed pg-proxy reference) - db_stack/templates: removed pg-proxy and mongo-proxy service blocks - test/host_vars/iklim-app-01: added act_runner_name override to preserve existing test runner registration Roadmap and setup docs: - roadmap/03-infra-stack-changes: added replicas:0 for etcd/postgresql/ mongodb/pg-proxy/mongo-proxy in prod overlay; updated placement table; fixed grafana/data mkdir (auto-created by Ansible); translated Turkish note to English - roadmap/08-deploy-pipeline-update: updated stale "remains idle" note for standalone etcd (now disabled with replicas:0) - roadmap/01-swarm-init-multinode: consistency fixes - setup/06: added Outputs section and etcd firewall port documentation - setup/07: removed prometheus/data from StorageBox acceptance criteria; replaced manual StorageBox mkdir section with Ansible auto-creation note; updated prod README section with full bootstrap instructions and vault docs; added act_runner_labels prod policy - setup/08: extensive rewrite — aligned with Patroni etcd overlay DNS, corrected hcloud_firewall.app reference, updated all StorageBox paths from /prod/db/ to /db/ - setup/09: removed prometheus/data from acceptance criteria; updated runner label policy (removed docker/swarm-manager labels); added acceptance criterion for disabled services absent from docker service ls Terraform: - prod/firewall.tf: added missing DB subnet mutual rules (etcd, Patroni) - prod/outputs.tf: added prod_floating_ip and prod_private_ips outputs - prod/servers.tf: aligned placement group and naming - prod/variables.tf: corrected variable descriptions - prod/terraform.tfvars.example: updated defaults - terraform/hetzner/README.md: new comprehensive README covering both test and prod environments with firewall tables and inventory instructions ansible/README.md: expanded prod section with inventory groups, bootstrap run order, runner label policy, and vault variable documentation
67 lines
1.5 KiB
Django/Jinja
67 lines
1.5 KiB
Django/Jinja
scope: iklim-postgres
|
|
namespace: /db/
|
|
name: postgresql-{{ inventory_hostname.split('-')[-1] }}
|
|
|
|
restapi:
|
|
listen: 0.0.0.0:8008
|
|
connect_address: patroni-{{ inventory_hostname.split('-')[-1] }}:8008
|
|
|
|
etcd3:
|
|
hosts:
|
|
- etcd-01:2379
|
|
- etcd-02:2379
|
|
- etcd-03:2379
|
|
|
|
bootstrap:
|
|
dcs:
|
|
ttl: 30
|
|
loop_wait: 10
|
|
retry_timeout: 10
|
|
maximum_lag_on_failover: 1048576
|
|
postgresql:
|
|
use_pg_rewind: true
|
|
parameters:
|
|
wal_level: replica
|
|
hot_standby: "on"
|
|
wal_keep_size: 512
|
|
max_wal_senders: 5
|
|
max_replication_slots: 5
|
|
shared_preload_libraries: 'pg_stat_statements'
|
|
pg_stat_statements.track: 'all'
|
|
|
|
initdb:
|
|
- encoding: UTF8
|
|
- data-checksums
|
|
|
|
pg_hba:
|
|
- host replication replicator 10.20.20.0/24 scram-sha-256
|
|
- host all all 10.20.10.0/24 scram-sha-256
|
|
- host all all 10.20.20.0/24 scram-sha-256
|
|
|
|
users:
|
|
postgres:
|
|
password: "${POSTGRES_PASSWORD}"
|
|
options:
|
|
- superuser
|
|
|
|
postgresql:
|
|
listen: 0.0.0.0:5432
|
|
connect_address: patroni-{{ inventory_hostname.split('-')[-1] }}:5432
|
|
data_dir: /var/lib/postgresql/data/pgdata
|
|
pgpass: /tmp/pgpass0
|
|
authentication:
|
|
replication:
|
|
username: replicator
|
|
password: "${REPLICATOR_PASSWORD}"
|
|
superuser:
|
|
username: postgres
|
|
password: "${POSTGRES_PASSWORD}"
|
|
parameters:
|
|
unix_socket_directories: "/var/run/postgresql"
|
|
|
|
tags:
|
|
nofailover: false
|
|
noloadbalance: false
|
|
clonefrom: false
|
|
nosync: false
|