This is the multi-page printable view of this section. .
References
- 1: Supported Linux
- 2: Modules
- 3: File Hierarchy
- 4: Parameters
- 5: Playbooks
- 6: Port List
1 - Supported Linux
Pigsty runs on Linux with amd64/x86_64 and arm64/aarch64 architectures. It supports three major distribution families: EL, Debian, and Ubuntu.
Pigsty runs directly on the host without containers. It supports actively maintained mainstream releases in these three families on both architectures.
Overview
Recommended OS versions: Rocky Linux 9.8 / 10.2, Debian 12.15 / 13.7, Ubuntu 22.04.5 / 24.04.5 / 26.04.1.
| Distro | Arch | OS Code | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|---|---|
| RHEL / Rocky / Alma 10 | x86_64 | el10.x86_64 | |||||
| RHEL / Rocky / Alma 10 | aarch64 | el10.aarch64 | |||||
| RHEL / Rocky / Alma 9 | x86_64 | el9.x86_64 | |||||
| RHEL / Rocky / Alma 9 | aarch64 | el9.aarch64 | |||||
Ubuntu 26.04 (resolute) | x86_64 | u26.x86_64 | |||||
Ubuntu 26.04 (resolute) | aarch64 | u26.aarch64 | |||||
Ubuntu 24.04 (noble) | x86_64 | u24.x86_64 | |||||
Ubuntu 24.04 (noble) | aarch64 | u24.aarch64 | |||||
Ubuntu 22.04 (jammy) | x86_64 | u22.x86_64 | |||||
Ubuntu 22.04 (jammy) | aarch64 | u22.aarch64 | |||||
Debian 13 (trixie) | x86_64 | d13.x86_64 | |||||
Debian 13 (trixie) | aarch64 | d13.aarch64 | |||||
Debian 12 (bookworm) | x86_64 | d12.x86_64 | |||||
Debian 12 (bookworm) | aarch64 | d12.aarch64 |
These seven minor releases are the current validation baselines. The extension repository retains EL8 compatibility on both architectures. Thus, the complete package matrix covers 16 Linux platforms. EL8 is in its retirement transition and is no longer a recommended deployment baseline.
EL
Pigsty supports RHEL / Rocky / Alma / Anolis / CentOS 8, 9, 10.
| EL Distro | Arch | OS Code | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|---|---|
| RHEL10 / Rocky10 / Alma10 | x86_64 | el10.x86_64 | |||||
| RHEL10 / Rocky10 / Alma10 | aarch64 | el10.aarch64 | |||||
| RHEL9 / Rocky9 / Alma9 | x86_64 | el9.x86_64 | |||||
| RHEL9 / Rocky9 / Alma9 | aarch64 | el9.aarch64 | |||||
| RHEL8 / Rocky8 / Alma8 | x86_64 | el8.x86_64 | |||||
| RHEL8 / Rocky8 / Alma8 | aarch64 | el8.aarch64 | |||||
| RHEL7 / CentOS7 | x86_64 | el7.x86_64 | |||||
| RHEL7 / CentOS7 | aarch64 | - |
Rocky Linux 9.8 / 10.2 balances stability and recent software. We recommend these versions for EL users.
EL8 reaches end of life in 2029. Plan an upgrade as soon as possible. EL10 support is ready. The next release will remove EL8 support.
RHEL 7 reached end of life in June 2024. PGDG stopped providing binary packages for PG 16/17/18 on EL7.
For extended support on legacy OS, consider Enterprise Subscription.
Ubuntu
Pigsty supports Ubuntu 26.04 / 24.04 / 22.04:
| Ubuntu Distro | Arch | OS Code | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|---|---|
Ubuntu 26.04 (resolute) | x86_64 | u26.x86_64 | |||||
Ubuntu 26.04 (resolute) | aarch64 | u26.aarch64 | |||||
Ubuntu 24.04 (noble) | x86_64 | u24.x86_64 | |||||
Ubuntu 24.04 (noble) | aarch64 | u24.aarch64 | |||||
Ubuntu 22.04 (jammy) | x86_64 | u22.x86_64 | |||||
Ubuntu 22.04 (jammy) | aarch64 | u22.aarch64 |
Ubuntu 26.04 provides the newest LTS baseline, while Ubuntu 24.04 remains the conservative default for Ubuntu users.
Debian
Pigsty supports Debian 12 / 13. We recommend the latest Debian 13.7:
| Debian Distro | Arch | OS Code | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|---|---|
Debian 13 (trixie) | x86_64 | d13.x86_64 | |||||
Debian 13 (trixie) | aarch64 | d13.aarch64 | |||||
Debian 12 (bookworm) | x86_64 | d12.x86_64 | |||||
Debian 12 (bookworm) | aarch64 | d12.aarch64 | |||||
Debian 11 (bullseye) | x86_64 | d11.x86_64 (historical) | |||||
Debian 11 (bullseye) | aarch64 | - |
Debian 11 regular support ended on 2024-08-14, and LTS ended on 2026-08-31. See the official Debian lifecycle. Pigsty’s current baseline is Debian 12 / 13. Contact Professional Support for legacy-system support scope.
Vagrant
For local VM deployment, use these Vagrant base images. Pigsty development uses the same images:
cloud-image/rocky-8: Rocky 8.10cloud-image/rocky-9: Rocky 9.8cloud-image/rocky-10: Rocky 10.2cloud-image/debian-12: Debian 12.15cloud-image/debian-13: Debian 13.7cloud-image/ubuntu-22.04: Ubuntu 22.04.5cloud-image/ubuntu-24.04: Ubuntu 24.04.5cloud-image/ubuntu-26.04: Ubuntu 26.04.1
OpenTofu
For cloud deployment, consider these OS image prefixes in OpenTofu templates (Aliyun example):
| x86_64 | Aliyun Image Prefix |
|---|---|
| Rocky 8.10 | rockylinux_8_10_x64 |
| Rocky 9.8 | rockylinux_9_8_x64 |
| Rocky 10.2 | rockylinux_10_2_x64 |
| Ubuntu 22.04.5 | ubuntu_22_04_x64_20G |
| Ubuntu 24.04.5 | ubuntu_24_04_x64_20G |
| Ubuntu 26.04.1 | ubuntu_26_04_x64_20G |
| Debian 12.15 | debian_12_15_x64 |
| Debian 13.7 | debian_13_7_x64 |
| aarch64 | Aliyun Image Prefix |
|---|---|
| Rocky 8.10 | rockylinux_8_10_arm64 |
| Rocky 9.8 | rockylinux_9_8_arm64 |
| Rocky 10.2 | rockylinux_10_2_arm64 |
| Ubuntu 22.04.5 | ubuntu_22_04_arm64_20G |
| Ubuntu 24.04.5 | ubuntu_24_04_arm64_20G |
| Ubuntu 26.04.1 | ubuntu_26_04_arm64_20G |
| Debian 12.15 | debian_12_15_arm64 |
| Debian 13.7 | debian_13_7_arm64 |
Alibaba Cloud’s public image selector matches the latest baseline build by prefix. For example, Debian 13.7 matches
debian_13_7_x64_20G_alibase_20261019.vhdanddebian_13_7_arm64_20G_alibase_20261019.vhd.
2 - Modules
Core and Extension Modules
The table lists modules with separate configuration and documentation. GA, BETA, and PILOT indicate maturity; the module count does not imply that every module is production-ready.
| Module | Category | Status | Documentation | Description |
|---|---|---|---|---|
PGSQL | Core | GA | /docs/pgsql | HA PostgreSQL with backups, monitoring, SOPs, and extensions |
INFRA | Core | GA | /docs/infra | Local repository, VictoriaMetrics/Logs/Traces, Grafana, and other infrastructure |
NODE | Core | GA | /docs/node | Node initialization/convergence: tuning, admins, HAProxy, Vector, Keepalived |
ETCD | Core | GA | /docs/etcd | PostgreSQL HA DCS: discovery, configuration, and election metadata |
MINIO | Extension | GA | /docs/minio | Silo S3-compatible object storage, usable as a PostgreSQL backup repository |
REDIS | Extension | GA | /docs/redis | Redis (default) or Valkey standalone, sentinel, and cluster deployment/monitoring |
DOCKER | Extension | GA | /docs/docker | Docker daemon and container application runtime |
VAULT | Extension | BETA | /docs/vault | OpenBao KMS and secrets storage (roles/vault, roles/vault_remove) |
JUICE | Extension | BETA | /docs/juice | JuiceFS distributed filesystem with PostgreSQL metadata |
VIBE | Extension | BETA | /docs/vibe | Browser development environment with Code-Server, JupyterLab, Node.js, Claude Code, and Codex CLI |
KAFKA | Extension | PILOT | /docs/kafka | Apache Kafka 4.x dynamic KRaft cluster deployment, security baseline, and monitoring. |
MYSQL | Extension | PILOT | /docs/mysql | Native MySQL 8.4 LTS standalone or three-node InnoDB Cluster with TLS, backups, and monitoring |
Core Modules
Pigsty provides four core modules. Together, they deliver complete, highly available PostgreSQL services:
PGSQL: Self-healing PostgreSQL clusters with HA, PITR, IaC, SOP, monitoring, and 625 extensions.INFRA: Local software repository, VictoriaMetrics, VictoriaLogs, VictoriaTraces, Grafana, Alertmanager, Blackbox Exporter…NODE: Node convergence for hostname, timezone, NTP, SSH, sudo, HAProxy, Vector, and Keepalived.ETCD: Distributed key-value store used as DCS for HA PostgreSQL clusters: consensus leader election/config management/service discovery.
These four modules are usually installed together. You can also use them separately. In practice, only the NODE module is usually mandatory.
Extension Modules
Pigsty provides eight optional extension modules to expand the data infrastructure:
MINIO: An S3-compatible object-storage module that deploys Silo and provides PostgreSQL backup integration and monitoring.REDIS: Redis server with standalone/sentinel/cluster production deployment and full monitoring support.DOCKER: Docker daemon service for one-click deployment of stateless software templates on Pigsty.VAULT: secrets/KMS module (roles/vault+roles/vault_remove) based on OpenBao, with Raft, mandatory TLS 1.3, and auto-unseal, for transparent encryption, object storage, and application secrets.JUICE: JuiceFS distributed filesystem module using PostgreSQL as metadata engine, providing shared POSIX storage.VIBE: Browser-based development environment with Code-Server, JupyterLab, Node.js, Claude Code, and Codex CLI.KAFKA: Apache Kafka 4.x dynamic KRaft clusters with TLS/SCRAM/ACL security baseline, declarative topics/users, and full monitoring.MYSQL: native MySQL 8.4 LTS (roles/mysql+roles/mysql_remove), standalone or three-node single-primary InnoDB Cluster, with mandatory TLS, node VIP, XtraBackup physical backups, and monitoring/alerts.
Ecosystem Modules
These PostgreSQL ecosystem components are optional compatibility kernels or experimental capabilities and are not counted among the 12 modules above:
SUPABASE,DUCKDB: peripheral ecosystem integration.MSSQL,IVORY,POLAR,CITUS,CLOUDBERRY,PGEDGE: kernel replacement, distributed, and MPP forms.- MySQL-compatible OpenHalo, ORIOLE, PGTDE, and AGENS: protocol compatibility, storage engines, transparent encryption, and graph databases.
pg_mode: mysqlselects PostgreSQL-based OpenHalo, distinct from the standalone native MYSQL 8.4 module. GREENPLUM,NEON: historical docs retained, no longer default public capabilities.KUBE,VICTORIA,JUPYTER: other pilot modules, currently not open for public use.
3 - File Hierarchy
Pigsty FHS
The default Pigsty home directory is ~/pigsty. It has this file structure:
~/pigsty Source Tree
- app/
- Application template resources
- bin/
- Administration scripts such as `node-add`, `pgsql-add`, `vault-add`, and `vault-rm`
- conf/
- meta.yml
- … · Other single-node templates
- fork/
- Kernel fork templates such as pgsql, mssql, and ivory
- ha/
- High-availability topology templates
- app/
- Application templates
- demo/
- Demonstration templates
- build/
- Multi-platform build inventories
- files/
- victoria/
- Rules and operations scripts
- grafana/
- Grafana dashboards
- postgres/
- PostgreSQL management scripts
- migration/
- Data-migration task definitions
- pki/
- Self-signed CA and certificates
- victoria/
- roles/
- Ansible role implementations
- templates/
- Ansible templates
- vagrant/
- Vagrant sandbox definitions
- terraform/
- OpenTofu cloud-resource templates (Terraform-compatible)
- configure
- ansible.cfg
- pigsty.yml
- deploy.yml / infra.yml / node.yml / etcd.yml / vault.yml / minio.yml / pgsql.yml / …
- *-rm.yml · Module removal playbooks, such as `pgsql-rm.yml`, `vault-rm.yml`, and `mysql-rm.yml`
Kernel fork templates reside under conf/fork/. See Configuration Templates for the full list.
/infra is a runtime symlink to /data/infra. This directory contains observability data and generated configuration:
CA FHS
Pigsty’s self-signed CA is located in files/pki/ under the Pigsty home directory.
You must keep the CA key file secure: files/pki/ca/ca.key. The ca role generates this key when you run deploy.yml or infra.yml.
pigsty/files/pki · (local_user) 0755
- ca · (local_user) 0700/
- ca.key · 0600, keep secret
- ca.crt · 0644, trusted by all nodes
- vault · (local_user) 0700, OpenBao unseal key, initialization credentials, backups, and server certificates/
- unseal.key · 0600, 32-byte static unseal key, keep secret
- init.json · 0600, initial root token and recovery material
- backup.token · 0600, snapshot-only backup token
- backup/ · 0700, snapshots collected on the control node
- <vault_instance>.{key,crt} · 0600/0644, OpenBao server certificates
- csr · (local_user) 0755, certificate signing requests/
- misc · (local_user) 0755, miscellaneous and issued certificates/
- etcd · (local_user) 0755, etcd server certificates/
- minio · (local_user) 0755, minio server certificates/
- nginx · (local_user) 0755, Nginx SSL certificates/
- infra · (local_user) 0755, infra client certificates/
- pgsql · (local_user) 0755, pgsql server certificates/
- kafka · (local_user) 0755, Kafka server certificates/
- mysql · (local_user) 0755, MySQL server certificates/
Pigsty installs these certificate files on managed nodes:
All infra nodes have these certificates:
If the admin node fails, files/pki and pigsty.yml should be available on the backup admin node. Use rsync to copy them:
INFRA FHS
The infra role creates infra_data (default: /data/infra) and creates a symlink /infra -> /data/infra.
The permissions for /data/infra are root:infra 0771. Subdirectories default to *:infra 0750, unless overridden:
/infra → /data/infra · root:infra 0771
- pgadmin · 5050:5050 0700/
- servers.json · 5050:5050 0600, pgAdmin server list
- pgpass · 5050:5050 0600, pgAdmin connection passwords
- alertmgr · prometheus:infra 0700/
- conf · root:infra 0750/
- patronictl.yml · root:admin 0640
- tmp · root:infra 0750/
- hosts · dnsmasq:dnsmasq 0755, DNS records/
- default · root:root 0644
- datasources · root:infra 0750/
- *.json · 0600, generated by register
- dashboards · root:infra 0750/
- metrics · victoria:infra 0750/
- logs · victoria:infra 0750/
- traces · victoria:infra 0750/
- bin · victoria:infra 0750/
- check · root:infra 0755
- new · root:infra 0755
- reload · root:infra 0755
- status · root:infra 0755
- rules · victoria:infra 0750/
- agent.yml · victoria:infra 0644
- infra.yml · victoria:infra 0644
- node.yml · victoria:infra 0644
- pgsql.yml · victoria:infra 0644
- redis.yml · victoria:infra 0644
- etcd.yml · victoria:infra 0644
- vault.yml · victoria:infra 0644
- minio.yml · victoria:infra 0644
- kafka.yml · victoria:infra 0644
- mysql.yml · victoria:infra 0644
- targets · victoria:infra 0750/
- infra · infra component targets, files 0640/
- node · node targets, files 0640/
- ping · ping targets, files 0640/
- etcd · etcd targets, files 0640/
- vault · OpenBao targets, files 0640/
- pgsql · pgsql targets, files 0640/
- pgrds · pgrds targets, files 0640/
- redis · redis targets, files 0640/
- minio · minio targets, files 0640/
- juice · JuiceFS targets, files 0640/
- mysql · MySQL targets, files 0640/
- kafka · Kafka targets, files 0640/
- docker · Docker targets, files 0640/
- patroni · Patroni SSL targets, files 0640/
- prometheus.yml · victoria:infra 0644
This structure is created by: roles/infra/tasks/dir.yml, roles/infra/tasks/victoria.yml, roles/infra/tasks/register.yml, roles/infra/tasks/dns.yml, and roles/infra/tasks/env.yml.
Remote PostgreSQL / RDS exporters deployed on INFRA through pgsql-monitor.yml (roles/pg_exporters) also create /etc/pg_exporter/ (prometheus:infra 0755) with per-unit <unit>.yml files (0644). Only remote monitoring uses this directory; local exporters on PGSQL nodes use /etc/pg_exporter.yml directly.
Certbot integration also writes /etc/letsencrypt/renewal-hooks/deploy/10-reload-nginx (0755) to reload Nginx after renewal.
NODE FHS
node_data specifies the node data directory. The default is /data, with owner root:root and mode 0755.
Default module data and backup directories are organized under /data:
/data · root:root 0755
- postgres · postgres:postgres 0700, default pg_fs_main/
- backups · postgres:postgres 0700, default pg_fs_backup; MySQL backups default to /data/backups/mysql/
- vault · openbao:openbao 0700, default vault_data; raft/ 0700 and backup/ root:root 0700/
- redis · redis:redis 0700, shared by multiple instances/
- minio · minio:minio 0750, single-node single-drive mode/
- etcd · etcd:etcd 0700, etcd_data/
- infra · root:infra 0771, infrastructure data/
- docker · root:root 0755, Docker data/
- kafka · kafka:kafka 0700, kafka_data/
- mysql · mysql:mysql 0750, default mysql_data for native MySQL 8.4/
- juice · root:root 0755, default juice_cache/
- … · Other component data directories/
node_monitor also creates /var/lib/node_exporter/textfile (root:root 0755) for the node_exporter Textfile Collector. Modules publish local task/backup metrics there, such as VAULT’s vault.prom and MYSQL’s mysql.prom.
Chrony and tuned
Chrony uses the native OS configuration path: /etc/chrony.conf on EL and /etc/chrony/chrony.conf on Debian / Ubuntu. node_tuned_profile_dir selects the custom tuned profile directory: /etc/tuned/profiles on EL 10, Debian 13, and Ubuntu 26; /etc/tuned on the other currently supported platforms.
HAProxy
Pigsty starts HAProxy with its own systemd unit and manages the main configuration separately from service fragments:
To append startup arguments in /etc/default/haproxy, use EXTRAOPTS and retain the default -S /run/haproxy-master.sock. The systemd unit loads configuration with explicit -f arguments. Do not add another -f to EXTRAOPTS.
Victoria FHS
Monitoring config has moved from the legacy /etc/prometheus layout to the /infra runtime layout.
The main template is roles/infra/templates/victoria/prometheus.yml, rendered to /infra/prometheus.yml.
Pigsty copies files/victoria/bin/* to /infra/bin/ and files/victoria/rules/* to /infra/rules/. Each module registers FileSD targets under /infra/targets/*.
Victoria and Monitoring File Layout
- infra/
- prometheus.yml · Victoria main configuration, Prometheus-compatible, 0644
- bin · Utility scripts, 0755/
- check
- new
- reload
- status
- rules · Recording and alert rules, *.yml 0644/
- agent.yml · Agent aggregation rules
- infra.yml · infra recording rules and alerts
- etcd.yml · etcd recording rules and alerts
- vault.yml · OpenBao recording rules and alerts
- node.yml · node recording rules and alerts
- pgsql.yml · pgsql recording rules and alerts
- redis.yml · redis recording rules and alerts
- minio.yml · minio recording rules and alerts
- kafka.yml · Kafka recording rules and alerts
- mysql.yml · MySQL recording rules and alerts
- targets · FileSD discovery targets, *.yml 0640/
- infra · Static infra targets/
- node · Static node targets/
- pgsql · Static pgsql targets/
- pgrds · Remote PostgreSQL/RDS targets/
- redis · Static redis targets/
- minio · Static minio targets/
- mysql · Static MySQL targets/
- etcd · Static etcd targets/
- vault · Static OpenBao targets/
- ping · Static ping targets/
- kafka · Static Kafka targets/
- juice · Static JuiceFS targets/
- docker · Static Docker targets/
- patroni · Static Patroni targets when SSL is enabled/
- etc/
- default/
- vmetrics · victoria:infra 0644
- vlogs · victoria:infra 0644
- vtraces · victoria:infra 0644
- vmalert · victoria:infra 0644
- alertmanager · prometheus:infra 0640
- blackbox_exporter · prometheus:infra 0644
- alertmanager.yml · prometheus:infra 0644
- blackbox.yml · prometheus:infra 0644
- default/
Pigsty stores generated INFRA units in /etc/systemd/system/. These include vmetrics, vlogs, vtraces, vmalert, alertmanager, blackbox_exporter, nginx_exporter, and dnsmasq. Distribution package unit directories are not write targets for these roles.
PostgreSQL FHS
The following parameters and internal variables are related to PostgreSQL directory layout:
pg_dbsu_home: Postgres default user home directory, default:/var/lib/pgsqlpg_bin_dir: Postgres binary directory, default:/usr/pgsql/bin/pg_fs_main: Postgres primary data directory, default:/data/postgrespg_fs_backup: Postgres backup disk mount point, default:/data/backups(optional; can also be a subdirectory on primary disk)pg_data: Internal variable, fixed to the Postgres data-directory symlink/pg/datapg_cluster_dir: Derived variable,{{ pg_fs_main }}/{{ pg_cluster }}-{{ pg_version }}pg_backup_dir: Derived variable,{{ pg_fs_backup }}/{{ pg_cluster }}-{{ pg_version }}
/etc/pgbackrest and /etc/pgbouncer are owned by {{ pg_dbsu }}:postgres with mode 0750; /etc/pgbackrest/pgbackrest.conf uses 0640. The local exporter writes configuration directly to /etc/pg_exporter.yml, without creating an /etc/pg_exporter subdirectory on PG nodes.
Data File Structure
Binary File Structure
On EL-compatible distributions (using yum), PostgreSQL default installation location is:
Pigsty creates the /usr/pgsql symlink. It points to the version specified by pg_version. For example:
The default pg_bin_dir is therefore /usr/pgsql/bin/. Pigsty adds this path to the system PATH environment variable in /etc/profile.d/pgsql.sh.
On Ubuntu/Debian, the default PostgreSQL Deb package installation location is:
Pigsty also stores generated PostgreSQL runtime units in /etc/systemd/system/. These primarily include patroni.service, postgres.service, pgbouncer.service, pg_exporter.service, pgbackrest_exporter.service, and pgbouncer_exporter.service. If VIP is enabled, they also include vip-manager.service.
Pgbouncer FHS
Pgbouncer runs under the same user as {{ pg_dbsu }} (default postgres), with configs in /etc/pgbouncer.
pgbouncer.ini: main pool configuration (postgres:postgres 0640)database.txt: pooled database definitions (postgres:postgres 0600)useropts.txt: per-user connection options (postgres:postgres 0600)userlist.txt: password file maintained by/pg/bin/pgb-user(postgres:postgres 0600)pgb_hba.conf: access control file (postgres:postgres 0600)
Object Storage FHS
The MINIO module currently deploys only Silo. It retains minio_* parameter and directory names for compatibility:
Silo certificates are stored in /home/minio/.minio/certs/. The module name, role parameters, data directory, and FileSD path retain the compatible MINIO / minio_* naming.
Redis FHS
Pigsty manages Redis or Valkey with the same directory layout and instance naming.
Service units call binaries according to redis_type (/bin/* is compatible with /usr/bin/* on most distributions):
For a Redis instance named redis-test-1-6379, the related resources are as follows:
Pigsty stores generated Redis/Valkey instance and exporter units in /etc/systemd/system/. Instance units use Type=notify. Packages can provide units in distribution directories. The roles do not write to those directories.
Vault FHS
VAULT runs OpenBao as openbao.service. Its node and admin-node layout is:
OpenBao (VAULT) File Layout
- etc/
- openbao · root:openbao 0750/
- openbao.hcl · root:openbao 0640, OpenBao service configuration
- unseal.key · root:openbao 0640, static auto-unseal key copy
- backup.token · root:root 0600, daily snapshot token
- tls · root:openbao 0750/
- ca.crt · root:openbao 0640
- server.crt · root:openbao 0640
- server.key · root:openbao 0640
- profile.d/
- bao.sh · root:root 0644, CLI environment (BAO_ADDR / BAO_CACERT)
- systemd/system/
- openbao.service · root:root 0644, Pigsty-rendered unit
- openbao · root:openbao 0750/
- data/vault · openbao:openbao 0700, default vault_data/
- raft · openbao:openbao 0700, embedded Raft storage/
- backup · root:root 0700, daily vault-*.snap snapshots (0600) and .backup.lock/
- var/log/openbao · openbao:openbao 0750, audit.log (0600)/
- var/lib/node_exporter/textfile/
- vault.prom · Snapshot timestamp and size metrics
- infra/targets/vault/
- <cluster>-<seq>.yml · victoria:infra 0640, FileSD target
4 - Parameters
Use this page to find Pigsty v4.x parameters. For full explanations, read each module’s param page.
The files/cmdb.sql defaults contain 399 public parameters across 12 modules, including deployment and protected removal settings. See Modules for maturity levels.
Module Parameter Navigation
| Module | Groups | Parameters | Description |
|---|---|---|---|
PGSQL | 10 | 125 | PostgreSQL HA, backups, and PITR |
INFRA | 10 | 73 | Repositories and Victoria observability |
NODE | 11 | 73 | Node initialization, tuning, and operations baseline |
ETCD | 2 | 13 | ETCD clusters and removal safeguards |
VAULT | 2 | 8 | OpenBao secrets clusters and removal safeguards |
MINIO | 2 | 22 | Silo deployment, monitoring, and removal |
REDIS | 2 | 22 | Redis/Valkey deployment and removal |
DOCKER | 1 | 8 | Docker engine settings |
JUICE | 1 | 2 | JuiceFS instances and cache |
VIBE | 6 | 18 | Code/Jupyter/Node.js/Claude/Codex |
KAFKA | 2 | 19 | Kafka deployment, including kafka_jmx_exporter_enabled, and removal safeguards |
MYSQL | 6 | 16 | Native MySQL 8.4 deployment, backups, monitoring, and removal |
| Total | 55 | 399 | Default records in files/cmdb.sql |
cmdb.sqlcombinesINFRA_IDandINFRA_PACKAGE, giving INFRA 9 groups; docs split them into 10 for navigation. NODE also defines platform-derivednode_tuned_profile_dirindefaults/main.yml, so its parameter page lists 74 entries. Native MYSQL 8.4 exposes 16 parameters, includingmysql_data,mysql_backup_dir,mysql_backup_retention, and 3 removal safeguards. Fixed ports, versions, and timers are not public parameters.
Parameter Group Quick View
| Module | Major Groups |
|---|---|
PGSQL | PG_ID、PG_BUSINESS、PG_INSTALL、PG_BOOTSTRAP、PG_PROVISION、PG_BACKUP、PG_ACCESS、PG_MONITOR、PG_PITR、PG_REMOVE |
INFRA | META, CA, INFRA_ID, REPO, INFRA_PACKAGE, NGINX, DNS, VICTORIA, PROMETHEUS, GRAFANA |
NODE | NODE_ID, NODE_DNS, NODE_PACKAGE, NODE_TUNE, NODE_SEC, NODE_ADMIN, NODE_TIME, NODE_VIPHAPROXY, NODE_EXPORTER, VECTOR |
ETCD | ETCD, ETCD_REMOVE |
VAULT | VAULT、VAULT_REMOVE |
MINIO | MINIO, MINIO_REMOVE |
REDIS | REDIS, REDIS_REMOVE |
DOCKER | DOCKER |
JUICE | JUICE |
VIBE | VIBE: general settings, Code-Server, JupyterLab, Node.js, Claude Code, and Codex CLI |
KAFKA | KAFKA, KAFKA_REMOVE |
MYSQL | MYSQL: identity, directories, credentials, application objects, backups, monitoring, and protected removal |
Recommendations
5 - Playbooks
This page summarizes Pigsty v4.x playbook entries and usage guidance by module. For detailed task tags, open each module’s playbook page.
Module Playbook Navigation
| Module | Count | Playbooks |
|---|---|---|
INFRA | 3 | deploy.yml infra.yml infra-rm.yml |
NODE | 2 | node.yml node-rm.yml |
ETCD | 2 | etcd.yml etcd-rm.yml |
VAULT | 2 | vault.yml vault-rm.yml |
PGSQL | 7 | pgsql.yml pgsql-rm.ymlpgsql-user.yml pgsql-db.ymlpgsql-monitor.yml pgsql-migration.yml pgsql-pitr.yml |
REDIS | 2 | redis.yml redis-rm.yml |
MINIO | 2 | minio.yml minio-rm.yml |
DOCKER | 1 | docker.yml |
JUICE | 1 | juice.yml |
VIBE | 1 | vibe.yml |
KAFKA | 2 | kafka.yml kafka-rm.yml |
MYSQL | 2 | mysql.yml mysql-rm.yml |
Playbook Matrix
| Playbook | Module | Purpose |
|---|---|---|
deploy.yml | INFRA | Deploy the core chain: infra → node → etcd → vault → minio → pgsql |
infra.yml | INFRA | Initialize infrastructure nodes |
infra-rm.yml | INFRA | Remove infrastructure components |
node.yml | NODE | Manage nodes and baseline configuration |
node-rm.yml | NODE | Decommission nodes |
etcd.yml | ETCD | Install or expand ETCD |
etcd-rm.yml | ETCD | Remove or shrink ETCD |
vault.yml | VAULT | Initialize or converge OpenBao secrets clusters |
vault-rm.yml | VAULT | Remove OpenBao clusters or retire members |
pgsql.yml | PGSQL | Initialize PostgreSQL clusters or add instances |
pgsql-rm.yml | PGSQL | Remove PostgreSQL clusters/instances |
pgsql-user.yml | PGSQL | Add application users |
pgsql-db.yml | PGSQL | Add application databases |
pgsql-monitor.yml | PGSQL | Monitor remote PostgreSQL |
pgsql-migration.yml | PGSQL | Generate migration runbooks/scripts |
pgsql-pitr.yml | PGSQL | Point-in-time recovery |
redis.yml | REDIS | Deploy Redis |
redis-rm.yml | REDIS | Remove Redis |
minio.yml | MINIO | Deploy Silo |
minio-rm.yml | MINIO | Remove Silo, configuration, and optional data |
docker.yml | DOCKER | Deploy Docker |
juice.yml | JUICE | Deploy/remove JuiceFS instances |
vibe.yml | VIBE | Deploy the VIBE development environment |
kafka.yml | KAFKA | Create/converge complete dynamic KRaft clusters |
kafka-rm.yml | KAFKA | Remove Kafka clusters or safely retire members |
mysql.yml | MYSQL | Converge native MySQL 8.4 standalone or three-node InnoDB Cluster |
mysql-rm.yml | MYSQL | Remove clusters/members; delete data/configuration by default, retain backups |
Auxiliary Playbooks
The following playbooks are cross-module helpers.
| Playbook | Description |
|---|---|
cache.yml | Build offline installation package cache |
cert.yml | Issue certificates using Pigsty CA |
app.yml | Install Docker Compose app templates |
slim.yml | Minimal component installation scenario |
Playbook Usage Notes
Protection Mechanism
Several modules provide deletion safeguards through *_safeguard parameters:
- PGSQL:
pg_safeguardprotects PostgreSQL clusters, defaultfalse - ETCD:
etcd_safeguardprotects Etcd clusters, defaultfalse - VAULT:
vault_safeguardprotects OpenBao secrets clusters, defaulttrue - MINIO:
minio_safeguardprotects Silo clusters, defaultfalse - REDIS:
redis_safeguardprotects Redis instances, defaultfalse - KAFKA:
kafka_safeguardblocks Kafka removal, defaultfalse - MYSQL:
mysql_safeguardprotects native MySQL instances/clusters, defaulttrue
PGSQL, ETCD, MINIO, REDIS, and KAFKA default to false; explicitly enable their safeguards on initialized production clusters. VAULT and MYSQL default to true to prevent accidental destruction of encryption keys or MySQL data. mysql-rm.yml also defaults to mysql_rm_data: true, removing /data/mysql, configuration, and Router state while retaining mysql_backup_dir. Only full-cluster or standalone removal supports -e mysql_rm_data=false to stop with data retained.
When a safeguard is true, its *-rm.yml aborts immediately. After verifying risk and backups, override it explicitly on the command line:
Limiting Execution Scope
Use -l to limit execution targets:
For a large deployment, validate one cluster first. Then deploy in batches.
Idempotency
Most playbooks are idempotent and safe to rerun, with caveats:
infra.ymldoes not clean data by default. All cleanup parameters default tofalse:vmetrics_clean,vlogs_clean,vtraces_clean,grafana_clean, andnginx_clean.- To rebuild from a clean state, explicitly set relevant clean parameters to
true - Re-running
*-rm.ymldeletion playbooks requires extra caution
Task Tags
Use -t to run only selected task subsets:
Quick Command Reference
INFRA Module
NODE Module
ETCD Module
VAULT Module
PGSQL Module
REDIS Module
MINIO Module
DOCKER Module
KAFKA Module
For ordinary convergence, -l must include every declared member of the selected Kafka cluster. Only kafka-rm.yml accepts a single member for retirement.
MYSQL Module
mysql-rm.yml requires explicit -l and -e mysql_safeguard=false. Default mysql_rm_data=true destroys /data/mysql, configuration, and Router state, but always retains physical backups under mysql_backup_dir (default /data/backups/mysql). A single-member target that is primary is switched away first. Single-member removal does not support -e mysql_rm_data=false.
6 - Port List
This page lists the default ports for Pigsty module components. Adjust them as needed. Use this list to configure specific firewall rules.
| Module | Component | Port | Parameter | Status |
|---|---|---|---|---|
NODE | node_exporter | 9100 | node_exporter_port | Enabled |
NODE | haproxy | 9101 | haproxy_exporter_port | Enabled |
NODE | vector | 9598 | vector_port | Enabled |
NODE | keepalived_exporter | 9650 | vip_exporter_port | Optional |
NODE | chronyd | 123 | - | Enabled |
DOCKER | docker | 9323 | docker_exporter_port | Optional |
INFRA | nginx | 80 | nginx_port | Enabled |
INFRA | nginx | 443 | nginx_ssl_port | Enabled |
INFRA | nginx_exporter | 9113 | nginx_exporter_port | Enabled |
INFRA | grafana | 3000 | grafana_port | Enabled |
INFRA | victoriaMetrics | 8428 | vmetrics_port | Enabled |
INFRA | victoriaLogs | 9428 | vlogs_port | Enabled |
INFRA | victoriaTraces | 10428 | vtraces_port | Enabled |
INFRA | vmalert | 8880 | vmalert_port | Enabled |
INFRA | alertmanager | 9059 | alertmanager_port | Enabled |
INFRA | blackbox_exporter | 9115 | blackbox_port | Enabled |
INFRA | dnsmasq | 53 | dns_port | Enabled |
ETCD | etcd | 2379 | etcd_port | Enabled |
ETCD | etcd | 2380 | etcd_peer_port | Enabled |
VAULT | openbao API | 8200 | vault_port: HTTPS client API and optional VIP HAProxy | ⚠️ Optional |
VAULT | openbao Raft | 8201 | vault_port + 1: internal Raft peer mTLS | ⚠️ Optional |
MINIO | Silo S3 API | 9000 | minio_port | Optional |
MINIO | Silo admin port | 9001 | minio_admin_port | Optional |
REDIS | Redis / Valkey | 6379 | redis_instances | Optional |
REDIS | redis_exporter | 9121 | redis_exporter_port | Optional |
VIBE | code-server | 8443 | code_port | Optional |
VIBE | jupyterlab | 8888 | jupyter_port | Optional |
JUICE | juicefs metrics | 9567 | juice_instances, port field | ⚠️ Optional |
KAFKA | broker | 9092 | kafka_port | 🧪 PILOT |
KAFKA | KRaft controller | 9093 | kafka_controller_port | 🧪 PILOT |
KAFKA | kafka_exporter | 9308 | kafka_exporter_port | 🧪 PILOT |
KAFKA | JMX exporter | 9404 | kafka_jmx_exporter_port | 🧪 PILOT |
MYSQL | mysqld | 3306 | Fixed value (the current pilot exposes no port parameter) | 🧪 PILOT |
MYSQL | MySQL X Protocol | 33060 | Fixed value; loopback-only on a single node, member-facing in a 3-node topology | 🧪 PILOT |
MYSQL | Group Replication | 33061 | Fixed value; three-node InnoDB Cluster only | 🧪 PILOT |
MYSQL | MySQL Router RW | 6446 | Fixed value; three-node InnoDB Cluster only | 🧪 PILOT |
MYSQL | MySQL Router RO | 6447 | Fixed value; three-node InnoDB Cluster only | 🧪 PILOT |
MYSQL | mysqld_exporter | 9104 | Fixed value; controlled by mysql_exporter_enabled | 🧪 PILOT |
PGSQL | postgres | 5432 | pg_port | Enabled |
PGSQL | pgbouncer | 6432 | pgbouncer_port | Enabled |
PGSQL | patroni | 8008 | patroni_port | Enabled |
PGSQL | pg_exporter | 9630 | pg_exporter_port | Enabled |
PGSQL | pgbouncer_exporter | 9631 | pgbouncer_exporter_port | Enabled |
PGSQL | pgbackrest_exporter | 9854 | pgbackrest_exporter_port | Enabled |
PGSQL | {{ pg_cluster }}-primary | 5433 | pg_default_services | Enabled |
PGSQL | {{ pg_cluster }}-replica | 5434 | pg_default_services | Enabled |
PGSQL | {{ pg_cluster }}-default | 5436 | pg_default_services | Enabled |
PGSQL | {{ pg_cluster }}-offline | 5438 | pg_default_services | Enabled |
PGSQL | {{ pg_cluster }}-<service> | 543x | pg_services | Optional |
Kafka port 9404 is enabled only when kafka_jmx_exporter_enabled is true. The protocol exporter on 9308 is independent of this toggle.
The native MySQL pilot reuses port 3306 for MySQL Shell AdminAPI. A local systemd timer runs XtraBackup, which has no listening port. The role explicitly disables the MySQL Router REST management interface. The table lists only network endpoints currently managed by the role.
Public Port Recommendations
If you use firewall zone mode, expose only minimum required ports via node_firewall_public_port:
- Minimal management surface:
22, 80, 443(recommended) - If public direct DB access is required: additionally expose
5432
Avoid direct public exposure of internal component ports. Examples include:
Do not expose internal components directly to the Internet: etcd (2379/2380), OpenBao/Vault (8200/8201), patroni (8008), exporters (9xxx), object storage S3/admin ports (9000/9001), redis (6379), ferretdb (27017/27018), Kafka (9092/9093), and MySQL Group Replication (33061).