175 lines
11 KiB
YAML
175 lines
11 KiB
YAML
---
|
|
#==============================================================#
|
|
# File : saas.yml (1-node)
|
|
# Desc : Feature rich 1-node template with all extensions
|
|
# Ctime : 2020-05-22
|
|
# Mtime : 2025-12-12
|
|
# Docs : https://pigsty.io/docs/conf
|
|
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
|
|
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
|
|
#==============================================================#
|
|
|
|
|
|
all:
|
|
|
|
#==============================================================#
|
|
# Clusters, Nodes, and Modules
|
|
#==============================================================#
|
|
children:
|
|
|
|
#----------------------------------#
|
|
# infra: monitor, alert, repo, etc..
|
|
#----------------------------------#
|
|
infra:
|
|
hosts:
|
|
10.10.10.10: { infra_seq: 1 }
|
|
vars:
|
|
docker_enabled: true # enabled docker with ./docker.yml
|
|
#docker_registry_mirrors: ["https://docker.1panel.live","https://docker.1ms.run","https://docker.xuanyuan.me","https://registry-1.docker.io"]
|
|
|
|
#----------------------------------#
|
|
# etcd cluster for HA postgres DCS
|
|
#----------------------------------#
|
|
etcd:
|
|
hosts:
|
|
10.10.10.10: { etcd_seq: 1 }
|
|
vars:
|
|
etcd_cluster: etcd
|
|
|
|
#----------------------------------#
|
|
# minio (OPTIONAL backup repo)
|
|
#----------------------------------#
|
|
minio:
|
|
hosts:
|
|
10.10.10.10: { minio_seq: 1 }
|
|
vars:
|
|
minio_cluster: minio
|
|
minio_users: # list of minio user to be created
|
|
- { access_key: pgbackrest ,secret_key: S3User.Backup ,policy: pgsql }
|
|
- { access_key: s3user_meta ,secret_key: S3User.Meta ,policy: meta }
|
|
- { access_key: s3user_data ,secret_key: S3User.Data ,policy: data }
|
|
|
|
#----------------------------------#
|
|
# pgsql (singleton on current node)
|
|
#----------------------------------#
|
|
# postgres cluster: pg-meta
|
|
pg-meta:
|
|
hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
|
|
vars:
|
|
pg_cluster: pg-meta
|
|
pg_users:
|
|
- {name: dbuser_meta ,password: DBUser.Meta ,pgbouncer: true ,roles: [dbrole_admin] ,comment: pigsty admin user }
|
|
- {name: dbuser_view ,password: DBUser.Viewer ,pgbouncer: true ,roles: [dbrole_readonly] ,comment: read-only viewer for meta database }
|
|
- {name: dbuser_grafana ,password: DBUser.Grafana ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for grafana database }
|
|
- {name: dbuser_bytebase ,password: DBUser.Bytebase ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for bytebase database }
|
|
- {name: dbuser_kong ,password: DBUser.Kong ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for kong api gateway }
|
|
- {name: dbuser_gitea ,password: DBUser.Gitea ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for gitea service }
|
|
- {name: dbuser_wiki ,password: DBUser.Wiki ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for wiki.js service }
|
|
- {name: dbuser_noco ,password: DBUser.Noco ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for nocodb service }
|
|
- {name: dbuser_odoo ,password: DBUser.Odoo ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for odoo service ,createdb: true} #,superuser: true}
|
|
pg_databases:
|
|
- {name: meta ,baseline: cmdb.sql ,comment: pigsty meta database ,schemas: [pigsty] ,extensions: [{name: vector},{name: postgis},{name: timescaledb}]}
|
|
- {name: grafana ,owner: dbuser_grafana ,revokeconn: true ,comment: grafana primary database }
|
|
- {name: bytebase ,owner: dbuser_bytebase ,revokeconn: true ,comment: bytebase primary database }
|
|
- {name: kong ,owner: dbuser_kong ,revokeconn: true ,comment: kong api gateway database }
|
|
- {name: gitea ,owner: dbuser_gitea ,revokeconn: true ,comment: gitea meta database }
|
|
- {name: wiki ,owner: dbuser_wiki ,revokeconn: true ,comment: wiki meta database }
|
|
- {name: noco ,owner: dbuser_noco ,revokeconn: true ,comment: nocodb database }
|
|
#- {name: odoo ,owner: dbuser_odoo ,revokeconn: true ,comment: odoo main database }
|
|
pg_hba_rules:
|
|
- {user: dbuser_view , db: all ,addr: infra ,auth: pwd ,title: 'allow grafana dashboard access cmdb from infra nodes'}
|
|
pg_libs: 'timescaledb,pg_stat_statements, auto_explain' # add timescaledb to shared_preload_libraries
|
|
node_crontab: # make one full backup 1 am everyday
|
|
- '00 01 * * * /pg/bin/pg-backup full'
|
|
|
|
redis-ms: # redis classic primary & replica
|
|
hosts: { 10.10.10.10: { redis_node: 1 , redis_instances: { 6379: { }, 6380: { replica_of: '10.10.10.10 6379' } } } }
|
|
vars: { redis_cluster: redis-ms ,redis_password: 'redis.ms' ,redis_max_memory: 64MB }
|
|
|
|
|
|
vars: # global variables
|
|
version: v4.0.0 # pigsty version string
|
|
admin_ip: 10.10.10.10 # admin node ip address
|
|
region: default # upstream mirror region: default|china|europe
|
|
node_tune: oltp # node tuning specs: oltp,olap,tiny,crit
|
|
pg_conf: oltp.yml # pgsql tuning specs: {oltp,olap,tiny,crit}.yml
|
|
proxy_env: # global proxy env when downloading packages
|
|
no_proxy: "localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.myqcloud.com,*.tsinghua.edu.cn"
|
|
# http_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
|
|
# https_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
|
|
# all_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
|
|
infra_portal: # infra services exposed via portal
|
|
home : { domain: i.pigsty } # default domain name
|
|
minio : { domain: m.pigsty ,endpoint: "${admin_ip}:9001" ,scheme: https ,websocket: true }
|
|
postgrest : { domain: api.pigsty ,endpoint: "127.0.0.1:8884" }
|
|
pgadmin : { domain: adm.pigsty ,endpoint: "127.0.0.1:8885" }
|
|
pgweb : { domain: cli.pigsty ,endpoint: "127.0.0.1:8886" }
|
|
bytebase : { domain: ddl.pigsty ,endpoint: "127.0.0.1:8887" }
|
|
jupyter : { domain: lab.pigsty ,endpoint: "127.0.0.1:8888", websocket: true }
|
|
gitea : { domain: git.pigsty ,endpoint: "127.0.0.1:8889" }
|
|
wiki : { domain: wiki.pigsty ,endpoint: "127.0.0.1:9002" }
|
|
noco : { domain: noco.pigsty ,endpoint: "127.0.0.1:9003" }
|
|
supa : { domain: supa.pigsty ,endpoint: "10.10.10.10:8000", websocket: true }
|
|
dify : { domain: dify.pigsty ,endpoint: "10.10.10.10:8001", websocket: true }
|
|
odoo : { domain: odoo.pigsty, endpoint: "127.0.0.1:8069" , websocket: true }
|
|
|
|
#----------------------------------#
|
|
# MinIO Related Options
|
|
#----------------------------------#
|
|
pgbackrest_method: minio # use minio as backup repo instead of 'local'
|
|
pgbackrest_repo: # pgbackrest repo: https://pgbackrest.org/configuration.html#section-repository
|
|
local: # default pgbackrest repo with local posix fs
|
|
path: /pg/backup # local backup directory, `/pg/backup` by default
|
|
retention_full_type: count # retention full backups by count
|
|
retention_full: 2 # keep 2, at most 3 full backup when using local fs repo
|
|
minio: # optional minio repo for pgbackrest
|
|
type: s3 # minio is s3-compatible, so s3 is used
|
|
s3_endpoint: sss.pigsty # minio endpoint domain name, `sss.pigsty` by default
|
|
s3_region: us-east-1 # minio region, us-east-1 by default, useless for minio
|
|
s3_bucket: pgsql # minio bucket name, `pgsql` by default
|
|
s3_key: pgbackrest # minio user access key for pgbackrest
|
|
s3_key_secret: S3User.Backup # minio user secret key for pgbackrest
|
|
s3_uri_style: path # use path style uri for minio rather than host style
|
|
path: /pgbackrest # minio backup path, default is `/pgbackrest`
|
|
storage_port: 9000 # minio port, 9000 by default
|
|
storage_ca_file: /etc/pki/ca.crt # minio ca file path, `/etc/pki/ca.crt` by default
|
|
block: y # Enable block incremental backup
|
|
bundle: y # bundle small files into a single file
|
|
bundle_limit: 20MiB # Limit for file bundles, 20MiB for object storage
|
|
bundle_size: 128MiB # Target size for file bundles, 128MiB for object storage
|
|
cipher_type: aes-256-cbc # enable AES encryption for remote backup repo
|
|
cipher_pass: pgBackRest # AES encryption password, default is 'pgBackRest'
|
|
retention_full_type: time # retention full backup by time on minio repo
|
|
retention_full: 14 # keep full backup for last 14 days
|
|
node_etc_hosts: [ "${admin_ip} i.pigsty sss.pigsty" ]
|
|
dns_records: [ "${admin_ip} api.pigsty adm.pigsty cli.pigsty ddl.pigsty lab.pigsty git.pigsty wiki.pigsty noco.pigsty supa.pigsty dify.pigsty odoo.pigsty" ]
|
|
|
|
#----------------------------------#
|
|
# Safe Guard
|
|
#----------------------------------#
|
|
# you can enable these flags after bootstrap, to prevent purging running etcd / pgsql instances
|
|
etcd_safeguard: false # prevent purging running etcd instance?
|
|
pg_safeguard: false # prevent purging running postgres instance? false by default
|
|
|
|
#----------------------------------#
|
|
# Repo, Node, Packages
|
|
#----------------------------------#
|
|
repo_remove: true # remove existing repo on admin node during repo bootstrap
|
|
node_repo_remove: true # remove existing node repo for node managed by pigsty
|
|
repo_extra_packages: [ pg17-core ,pg18-time ,pg18-gis ,pg18-rag ,pg18-fts ,pg18-olap ,pg18-feat ,pg18-lang ,pg18-type ,pg18-util ,pg18-func ,pg18-admin ,pg18-stat ,pg18-sec ,pg18-fdw ,pg18-sim ,pg18-etl]
|
|
pg_version: 18 # default postgres version
|
|
#pg_extensions: [ pg18-time ,pg18-gis ,pg18-rag ,pg18-fts ,pg18-olap ,pg18-feat ,pg18-lang ,pg18-type ,pg18-util ,pg18-func ,pg18-admin ,pg18-stat ,pg18-sec ,pg18-fdw ,pg18-sim ,pg18-etl]
|
|
|
|
#----------------------------------------------#
|
|
# PASSWORD : https://pigsty.io/docs/setup/security/
|
|
#----------------------------------------------#
|
|
grafana_admin_password: pigsty
|
|
grafana_view_password: DBUser.Viewer
|
|
pg_admin_password: DBUser.DBA
|
|
pg_monitor_password: DBUser.Monitor
|
|
pg_replication_password: DBUser.Replicator
|
|
patroni_password: Patroni.API
|
|
haproxy_admin_password: pigsty
|
|
minio_secret_key: S3User.MinIO
|
|
etcd_root_password: Etcd.Root
|
|
... |