133 lines
6.5 KiB
YAML
Executable File
133 lines
6.5 KiB
YAML
Executable File
#!/usr/bin/env ansible-playbook
|
|
---
|
|
#==============================================================#
|
|
# File : pgsql.yml
|
|
# Desc : init postgres cluster/instance
|
|
# Ctime : 2020-05-12
|
|
# Mtime : 2026-01-14
|
|
# Path : pgsql.yml
|
|
# Docs : https://pigsty.io/docs/pgsql/playbook#pgsqlyml
|
|
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
|
|
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
|
|
#==============================================================#
|
|
- name: PGSQL
|
|
become: true
|
|
hosts: all
|
|
gather_facts: no
|
|
roles:
|
|
- { role: node_id ,tags: [id,node-id] } # get node identity (always)
|
|
- { role: pg_id ,tags: [id,pg-id] } # get pgsql identity (always)
|
|
- { role: pgsql ,tags: pgsql } # init postgres cluster/instance
|
|
- { role: pg_monitor ,tags: monitor } # init postgres monitoring
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# Usage
|
|
#--------------------------------------------------------------#
|
|
# You have to pgsql-rm before running this on initialized hosts
|
|
#
|
|
# Init a cluster (e.g. pg-meta)
|
|
# ./pgsql.yml -l pg-meta
|
|
#
|
|
# Add/ReInit a replica to cluster (e.g. add 10.10.10.13 of pg-test)
|
|
# ./pgsql.yml -l 10.10.10.13 # refresh pg_services after expansion
|
|
# ./pgsql.yml -l 'pg-test,!10.10.10.13' -t pg_service
|
|
#
|
|
# Refresh Postgres Cluster Service (e.g. pg-test)
|
|
# ./pgsql.yml -l pg-test --tags=pg_service
|
|
#
|
|
# Reload Postgres/Pgbouncer HBA Rules (e.g. pg-test)
|
|
# ./pgsql.yml -l pg-test --tags=pg_hba,pgbouncer_hba,pgbouncer_reload -e pg_reload=true
|
|
#
|
|
#--------------------------------------------------------------#
|
|
# Utils
|
|
#--------------------------------------------------------------#
|
|
#
|
|
# bin/pgsql-add pg-meta # init pgsql cluster pg-meta
|
|
# bin/pgsql-add 10.10.10.10 # init pgsql instance 10.10.10.10
|
|
# bin/pgsql-add pg-test 10.10.10.13 # add 10.10.10.13 to cluster pg-test (with service refresh)
|
|
# bin/pgsql-svc pg-test # refresh haproxy service of pg-test (when membership changed)
|
|
# bin/pgsql-hba pg-test # reload pg/pgb hba rules of pg-test (when role/hba changed)
|
|
#
|
|
#--------------------------------------------------------------#
|
|
# Tasks
|
|
#--------------------------------------------------------------#
|
|
# pg_install : install postgres packages & extensions
|
|
# - pg_dbsu : setup os user sudo for postgres dbsu
|
|
# - pg_dbsu_create : exchange dbsu ssh keys
|
|
# - pg_dbsu_sudo : exchange dbsu ssh keys
|
|
# - pg_ssh : exchange dbsu ssh keys
|
|
# - pg_pkg : install postgres packages
|
|
# - pg_pre : pre-install task
|
|
# - pg_ext : install postgres extension packages
|
|
# - pg_post : post-install task
|
|
# - pg_link : link pgsql version bin to /usr/pgsql
|
|
# - pg_path : add pgsql bin to system path
|
|
# - pg_dir : create postgres directories and setup fhs
|
|
# - pg_bin : sync /pg/bin scripts
|
|
# - pg_alias : write pgsql/psql alias
|
|
# - pg_dummy : create dummy placeholder file
|
|
#
|
|
# pg_bootstrap : bootstrap postgres cluster
|
|
# - pg_config : generate postgres config
|
|
# - pg_conf : generate patroni config
|
|
# - pg_key : generate pgsodium key
|
|
# - pg_cert : issues certificates for postgres
|
|
# - pg_cert_private : check pg private key existence
|
|
# - pg_cert_issue : signing pg server certs
|
|
# - pg_cert_copy : copy key & certs to pg node
|
|
# - pg_launch : launch patroni primary & replicas (patroni)
|
|
# - pg_watchdog : grant watchdog permission to postgres
|
|
# - pg_primary : launch patroni/postgres primary
|
|
# - pg_init : init pg cluster with roles/templates
|
|
# - pg_pass : write .pgpass file to pg home
|
|
# - pg_replica : launch patroni/postgres replicas
|
|
# - pg_hba : generate pg HBA rules
|
|
# - patroni_reload : reload patroni config
|
|
# - pg_patroni : pause or remove patroni if necessary
|
|
#
|
|
# pg_provision : provision postgres business users & databases
|
|
# - pg_user : provision postgres business users
|
|
# - pg_user_config : render create user sql
|
|
# - pg_user_create : create user on postgres
|
|
# - pg_db : provision postgres business databases
|
|
# - pg_db_drop : drop database on postgres (state=absent/recreate)
|
|
# - pg_db_config : render create database sql
|
|
# - pg_db_create : create database on postgres
|
|
#
|
|
# pg_backup : init postgres PITR backup
|
|
# - pgbackrest : setup pgbackrest for backup
|
|
# - pgbackrest_config : generate pgbackrest config
|
|
# - pgbackrest_init : init pgbackrest repo
|
|
# - pgbackrest_backup : make a initial backup after bootstrap
|
|
#
|
|
# pg_crontab : setup postgres dbsu crontab
|
|
#
|
|
# pg_access : init postgres service access, pool, dns, vip, svc
|
|
# - pgbouncer : deploy a pgbouncer sidecar with postgres
|
|
# - pgbouncer_dir : create pgbouncer directories
|
|
# - pgbouncer_config : generate pgbouncer config
|
|
# - pgbouncer_hba : generate pgbouncer hba config
|
|
# - pgbouncer_user : generate pgbouncer userlist
|
|
# - pgbouncer_launch : launch pgbouncer pooling service
|
|
# - pgbouncer_reload : reload pgbouncer config
|
|
# - pg_vip : bind vip to pgsql primary with vip-manager
|
|
# - pg_vip_config : generate config for vip-manager
|
|
# - pg_vip_launch : launch vip-manager to bind vip
|
|
# - pg_dns : register dns name to infra dnsmasq
|
|
# - pg_dns_ins : register pg instance name
|
|
# - pg_dns_cls : register pg cluster name
|
|
# - pg_service : expose pgsql service with haproxy
|
|
# - pg_service_config : generate local haproxy config for pg services
|
|
# - pg_service_reload : expose postgres services with haproxy
|
|
#
|
|
# pg_monitor : setup pgsql monitor and register to infra
|
|
# - pg_exporter : config & launch pg_exporter
|
|
# - pgbouncer_exporter : config & launch pgbouncer_exporter
|
|
# - pgbackrest_exporter : config & launch pgbackrest_exporter
|
|
# - pg_register : register pgsql to monitoring/logging/datasource
|
|
# - add_metrics : register pg as victoria monitor targets
|
|
# - add_logs : register pg as vector logging source
|
|
# - add_ds : register pg database as grafana datasource
|
|
#--------------------------------------------------------------#
|
|
... |