File Hierarchy
How files are organized in Pigsty.
Pigsty FHS
1. #------------------------------------------------------------------------------
2. # pigsty
3. # ^-----@app # extra demo application resources
4. # ^-----@bin # bin scripts
5. # ^-----@docs # document (can be docsified)
6. # ^-----@files # ansible file resources
7. # ^-----@pigsty # pigsty config template files
8. # ^-----@prometheus # prometheus rules definition
9. # ^-----@grafana # grafana dashboards
10. # ^-----@postgres # /pg/bin/ scripts
11. # ^-----@migration # pgsql migration task definition
12. # ^-----@pki # self-signed CA & certs
14. # ^-----@roles # ansible business logic
15. # ^-----@templates # ansible templates
16. # ^-----@vagrant # sandbox resources
17. # ^-----configure # configure wizard script
18. # ^-----ansible.cfg # default ansible config file
19. # ^-----pigsty.yml # default config file
20. # ^-----*.yml # ansible playbooks
22. #------------------------------------------------------------------------------
23. # /etc/pigsty/
24. # ^-----@targets # file based service discovery targets definition
25. # ^-----@dashboards # static grafana dashboards
26. # ^-----@datasources # static grafana datasource
27. # ^-----@playbooks # extra ansible playbooks
28. #------------------------------------------------------------------------------
CA FHS
Pigsty’s self-signed CA is located on files/pki/ directory under pigsty home.
YOU HAVE TO SECURE THE CA KEY PROPERLY: files/pki/ca/ca.key, which is generated by the ca role during install.yml or infra.yml.
1. # pigsty/files/pki
2. # ^-----@ca # self-signed CA key & cert
3. # ^-----@ca.key # VERY IMPORTANT: keep it secret
4. # ^-----@ca.crt # VERY IMPORTANT: trusted everywhere
5. # ^-----@csr # signing request csr
6. # ^-----@misc # misc certs, issued certs
7. # ^-----@etcd # etcd server certs
8. # ^-----@minio # minio server certs
9. # ^-----@nginx # nginx SSL certs
10. # ^-----@infra # infra client certs
11. # ^-----@pgsql # pgsql server certs
Prometheus FHS
The prometheus bin / rules are located on files/prometheus/ directory under pigsty home.
While the main config file is located on roles/infra/templates/prometheus/prometheus.yml.j2 and rendered to /etc/prometheus/prometheus.yml on infra nodes.
1. #------------------------------------------------------------------------------
2. # Config FHS
3. #------------------------------------------------------------------------------
4. # /etc/prometheus/
5. # ^-----prometheus.yml # prometheus main config file
6. # ^-----@bin # util scripts: check,reload,status,new
7. # ^-----@rules # record & alerting rules definition
8. # ^-----infra.yml # infra rules & alert
9. # ^-----node.yml # node rules & alert
10. # ^-----pgsql.yml # pgsql rules & alert
11. # ^-----redis.yml # redis rules & alert
12. # ^-----minio.yml # minio rules & alert
13. # ^-----etcd.yml # etcd rules & alert
14. # ^-----@targets # file based service discovery targets definition
15. # ^-----@infra # infra static targets definition
16. # ^-----@node # nodes static targets definition
17. # ^-----@etcd # etcd static targets definition
18. # ^-----@minio # minio static targets definition
19. # ^-----@ping # blackbox ping targets definition
20. # ^-----@pgsql # pgsql static targets definition
21. # ^-----@redis # redis static targets definition
22. # ^-----@..... # other targets
23. # /etc/alertmanager.yml # alertmanager main config file
24. # /etc/blackbox.yml # blackbox exporter main config file
25. #------------------------------------------------------------------------------
Postgres FHS
The following parameters are related to the PostgreSQL database dir:
- pg_dbsu_home: Postgres default user’s home dir, default is
/var/lib/pgsql. - pg_bin_dir: Postgres binary dir, defaults to
/usr/pgsql/bin/. - pg_data: Postgres database dir, default is
/pg/data. - pg_fs_main: Postgres main data disk mount point, default is
/data. - pg_fs_bkup: Postgres backup disk mount point, default is
/data/backups(used when using local backup repo).
1. #--------------------------------------------------------------#
2. # Create Directory
3. #--------------------------------------------------------------#
4. # assumption:
5. # {{ pg_fs_main }} for main data , default: `/data` [fast ssd]
6. # {{ pg_fs_bkup }} for backup data , default: `/data/backups` [cheap hdd]
7. #--------------------------------------------------------------#
8. # default variable:
9. # pg_fs_main = /data fast ssd
10. # pg_fs_bkup = /data/backups cheap hdd (optional)
11. #
12. # /pg -> /data/postgres/pg-test-15 (soft link)
13. # /pg/data -> /data/postgres/pg-test-15/data
14. #--------------------------------------------------------------#
15. - name: create postgresql directories
16. tags: pg_dir
17. become: yes
18. block:
20. - name: make main and backup data dir
21. file: path={{ item }} state=directory owner=root mode=0777
22. with_items:
23. - "{{ pg_fs_main }}"
24. - "{{ pg_fs_bkup }}"
26. # pg_cluster_dir: "{{ pg_fs_main }}/postgres/{{ pg_cluster }}-{{ pg_version }}"
27. - name: create postgres directories
28. file: path={{ item }} state=directory owner={{ pg_dbsu }} group=postgres mode=0700
29. with_items:
30. - "{{ pg_fs_main }}/postgres"
31. - "{{ pg_cluster_dir }}"
32. - "{{ pg_cluster_dir }}/bin"
33. - "{{ pg_cluster_dir }}/log"
34. - "{{ pg_cluster_dir }}/tmp"
35. - "{{ pg_cluster_dir }}/cert"
36. - "{{ pg_cluster_dir }}/conf"
37. - "{{ pg_cluster_dir }}/data"
38. - "{{ pg_cluster_dir }}/meta"
39. - "{{ pg_cluster_dir }}/stat"
40. - "{{ pg_cluster_dir }}/change"
41. - "{{ pg_backup_dir }}/backup"
Data FHS
1. # basic
2. {{ pg_fs_main }} /data # top level data directory, usually a SSD mountpoint
3. {{ pg_dir_main }} /data/postgres # contains postgres data
4. {{ pg_cluster_dir }} /data/postgres/pg-test-15 # contains cluster `pg-test` data (of version 13)
5. /data/postgres/pg-test-15/bin # bin scripts
6. /data/postgres/pg-test-15/log # logs: postgres/pgbouncer/patroni/pgbackrest
7. /data/postgres/pg-test-15/tmp # tmp, sql files, rendered results
8. /data/postgres/pg-test-15/cert # postgres server certificates
9. /data/postgres/pg-test-15/conf # patroni config, links to related config
10. /data/postgres/pg-test-15/data # main data directory
11. /data/postgres/pg-test-15/meta # identity information
12. /data/postgres/pg-test-15/stat # stats information, summary, log report
13. /data/postgres/pg-test-15/change # changing records
14. /data/postgres/pg-test-15/backup # soft link to backup dir
16. {{ pg_fs_bkup }} /data/backups # could be a cheap & large HDD mountpoint
17. /var/backups/postgres/pg-test-15/backup # local backup repo path
19. # links
20. /pg -> /data/postgres/pg-test-15 # pg root link
21. /pg/data -> /data/postgres/pg-test-15/data # real data dir
22. /pg/backup -> /var/backups/postgres/pg-test-15/backup # base backup
Binary FHS
On EL releases, the default path for PostgreSQL bin is:
1. /usr/pgsql-${pg_version}/
Pigsty will create a softlink /usr/pgsql to the currently installed version specified by pg_version.
1. /usr/pgsql -> /usr/pgsql-15
Therefore, the default pg_bin_dir will be /usr/pgsql/bin/, and this path is added to the PATH environment via /etc/profile.d/pgsql.sh.
1. export PATH="/usr/pgsql/bin:/pg/bin:$PATH"
2. export PGHOME=/usr/pgsql
3. export PGDATA=/pg/data
Pgbouncer FHS
Pgbouncer is run using the Postgres user, and the config file is located in /etc/pgbouncer. The config file includes.
pgbouncer.ini: pgbouncer main configdatabase.txt: pgbouncer database listuserlist.txt: pgbouncer user listuseropts.txt: pgbouncer user options (user-level parameter overrides)pgb_hba.conf: lists the access privileges of the connection pool users
Redis FHS
Pigsty provides essential support for Redis deployment and monitoring.
Redis binaries are installed in /bin/ using RPM-packages or copied binaries, including:
1. redis-server
2. redis-server
3. redis-cli
4. redis-sentinel
5. redis-check-rdb
6. redis-check-aof
7. redis-benchmark
8. /usr/libexec/redis-shutdown
For a Redis instance named redis-test-1-6379, the resources associated with it are shown below:
1. /usr/lib/systemd/system/redis-test-1-6379.service # Services
2. /etc/redis/redis-test-1-6379.conf # Config
3. /data/redis/redis-test-1-6379 # Database Catalog
4. /data/redis/redis-test-1-6379/redis-test-1-6379.rdb # RDB File
5. /data/redis/redis-test-1-6379/redis-test-1-6379.aof # AOF file
6. /var/log/redis/redis-test-1-6379.log # Log
7. /var/run/redis/redis-test-1-6379.pid # PID
Last modified 2023-02-27: refresh en docs to v2.0 (e82b371)
