# fat

> 功能全测试模板，单节点安装所有扩展，构建包含 PG 14-18 全版本的本地软件源。

---

LLMS index: [llms.txt](/llms.txt)

---

`fat` 配置模板是 Pigsty 的 **功能全测试模板**（Feature-All-Test），在单节点上安装所有扩展插件，并构建包含 PostgreSQL 14-18 全部五个大版本所有扩展的本地软件源。

这是一个用于测试与开发的全功能配置，适合需要完整软件包缓存或测试全部扩展的场景。


--------

## 配置概览

- 配置名称： `fat`
- 节点数量： 单节点
- 配置说明：功能全测试模板，安装所有扩展，构建包含 PG 14-18 全版本的本地软件源
- 适用系统：`el8`, `el9`, `el10`, `d12`, `d13`, `u22`, `u24`, `u26`
- 适用架构：`x86_64`, `aarch64`
- 相关配置：[`meta`](/docs/conf/meta/)，[`slim`](/docs/conf/slim/)，[`fat`](/docs/conf/fat/)

启用方式：

```bash
./configure -c fat [-i <primary_ip>]
```

如需指定特定 PostgreSQL 版本：

```bash
./configure -c fat -v 16   # 使用 PostgreSQL 16
```


--------

## 配置内容

源文件地址：[`pigsty/conf/fat.yml`](https://github.com/pgsty/pigsty/blob/main/conf/fat.yml)

<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># File      :   fat.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Desc      :   Pigsty Feature-All-Test config template</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Ctime     :   2020-05-22</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Mtime     :   2025-12-28</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Docs      :   https://pigsty.io/docs/conf/fat</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># License   :   Apache-2.0 @ https://pigsty.io/docs/about/license/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Copyright :   2018-2026  Ruohang Feng / Vonng (rh@vonng.com)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># This is the 4-node sandbox for pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Usage:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   curl https://repo.pigsty.io/get | bash</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   ./configure -c fat [-v 18|17|16|15]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   ./deploy.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">all</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="c"># Clusters, Nodes, and Modules</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">children</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># PGSQL : https://pigsty.io/docs/pgsql</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># this is an example single-node postgres cluster with pgvector installed, with one biz database &amp; two biz users</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg-meta</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">pg_seq</span><span class="p">:</span><span class="w"> </span><span class="nt">1, pg_role</span><span class="p">:</span><span class="w"> </span><span class="l">primary }</span><span class="w"> </span><span class="c"># &lt;---- primary instance with read-write capability</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c">#x.xx.xx.xx: { pg_seq: 2, pg_role: replica } # &lt;---- read only replica for read-only online traffic</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c">#x.xx.xx.xy: { pg_seq: 3, pg_role: offline } # &lt;---- offline instance of ETL &amp; interactive queries</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_cluster</span><span class="p">:</span><span class="w"> </span><span class="l">pg-meta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c"># install, load, create pg extensions: https://pigsty.io/docs/pgsql/ext/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_extensions</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="l">pg18-main ,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]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_libs</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;timescaledb, pg_stat_statements, auto_explain, pg_wait_sampling&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c"># define business users/roles : https://pigsty.io/docs/pgsql/config/user</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_users</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">dbuser_meta              </span><span class="w"> </span><span class="c"># REQUIRED, `name` is the only mandatory field of a user definition</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Meta          </span><span class="w"> </span><span class="c"># optional, the password. can be a scram-sha-256 hash string or plain text</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">pgbouncer</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">                 </span><span class="c"># optional, add this user to the pgbouncer user-list? false by default (production user should be true explicitly)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty admin user     </span><span class="w"> </span><span class="c"># optional, comment string for this user/role</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">roles</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="l">dbrole_admin ]        </span><span class="w"> </span><span class="c"># optional, belonged roles. default roles are: dbrole_{admin|readonly|readwrite|offline}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#state: create                   # optional, create|absent, &#39;create&#39; by default, use &#39;absent&#39; to drop user</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#login: true                     # optional, can log in, true by default (new biz ROLE should be false)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#superuser: false                # optional, is superuser? false by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#createdb: false                 # optional, can create databases? false by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#createrole: false               # optional, can create role? false by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#inherit: true                   # optional, can this role use inherited privileges? true by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#replication: false              # optional, can this role do replication? false by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#bypassrls: false                # optional, can this role bypass row level security? false by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#connlimit: -1                   # optional, user connection limit, default -1 disable limit</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#expire_in: 3650                 # optional, now + n days when this role is expired (OVERWRITE expire_at)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#expire_at: &#39;2030-12-31&#39;         # optional, YYYY-MM-DD &#39;timestamp&#39; when this role is expired (OVERWRITTEN by expire_in)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#parameters: {}                  # optional, role level parameters with `ALTER ROLE SET`</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_mode: transaction          # optional, pgbouncer pool mode at user level, transaction by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_connlimit: -1              # optional, max database connections at user level, default -1 disable limit</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c"># Enhanced roles syntax (PG16+): roles can be string or object with options:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#   - dbrole_readwrite                       # simple string: GRANT role</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#   - { name: role, admin: true }            # GRANT WITH ADMIN OPTION</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#   - { name: role, set: false }             # PG16: REVOKE SET OPTION</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#   - { name: role, inherit: false }         # PG16: REVOKE INHERIT OPTION</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#   - { name: role, state: absent }          # REVOKE membership</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbuser_view ,password</span><span class="p">:</span><span class="w"> </span><span class="nt">DBUser.Viewer ,pgbouncer</span><span class="p">:</span><span class="w"> </span><span class="nt">true ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[dbrole_readonly], comment</span><span class="p">:</span><span class="w"> </span><span class="l">read-only viewer for meta database }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="c">#- {name: dbuser_bytebase ,password: DBUser.Bytebase ,pgbouncer: true ,roles: [dbrole_admin] ,comment: admin user for bytebase database   }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="c">#- {name: dbuser_remove ,state: absent }       # use state: absent to remove a user</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c"># define business databases : https://pigsty.io/docs/pgsql/config/db</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_databases</span><span class="p">:</span><span class="w">                       </span><span class="c"># define business databases on this cluster, array of database definition</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">meta                     </span><span class="w"> </span><span class="c"># REQUIRED, `name` is the only mandatory field of a database definition</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#state: create                  # optional, create|absent|recreate, create by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">baseline</span><span class="p">:</span><span class="w"> </span><span class="l">cmdb.sql             </span><span class="w"> </span><span class="c"># optional, database sql baseline path, (relative path among the ansible search path, e.g.: files/)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">schemas</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="l">pigsty ]            </span><span class="w"> </span><span class="c"># optional, additional schemas to be created, array of schema names</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">extensions</span><span class="p">:</span><span class="w">                     </span><span class="c"># optional, additional extensions to be installed: array of `{name[,schema]}`</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- <span class="l">vector                     </span><span class="w"> </span><span class="c"># install pgvector for vector similarity search</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- <span class="l">postgis                    </span><span class="w"> </span><span class="c"># install postgis for geospatial type &amp; index</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- <span class="l">timescaledb                </span><span class="w"> </span><span class="c"># install timescaledb for time-series data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">pg_wait_sampling, schema</span><span class="p">:</span><span class="w"> </span><span class="l">monitor }</span><span class="w"> </span><span class="c"># install pg_wait_sampling on monitor schema</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty meta database  </span><span class="w"> </span><span class="c"># optional, comment string for this database</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pgbouncer: true                # optional, add this database to the pgbouncer database list? true by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#owner: postgres                # optional, database owner, current user if not specified</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#template: template1            # optional, which template to use, template1 by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#strategy: FILE_COPY            # optional, clone strategy: FILE_COPY or WAL_LOG (PG15+), default to PG&#39;s default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#encoding: UTF8                 # optional, inherited from template / cluster if not defined (UTF8)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#locale: C                      # optional, inherited from template / cluster if not defined (C)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#lc_collate: C                  # optional, inherited from template / cluster if not defined (C)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#lc_ctype: C                    # optional, inherited from template / cluster if not defined (C)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#locale_provider: libc          # optional, locale provider: libc, icu, builtin (PG15+)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#icu_locale: en-US              # optional, icu locale for icu locale provider (PG15+)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#icu_rules: &#39;&#39;                  # optional, icu rules for icu locale provider (PG16+)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#builtin_locale: C.UTF-8        # optional, builtin locale for builtin locale provider (PG17+)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#tablespace: pg_default         # optional, default tablespace, pg_default by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#is_template: false             # optional, mark database as template, allowing clone by any user with CREATEDB privilege</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#allowconn: true                # optional, allow connection, true by default. false will disable connect at all</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#revokeconn: false              # optional, revoke public connection privilege. false by default. (leave connect with grant option to owner)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#register_datasource: true      # optional, register this database to grafana datasources? true by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#connlimit: -1                  # optional, database connection limit, default -1 disable limit</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_auth_user: dbuser_meta    # optional, all connection to this pgbouncer database will be authenticated by this user</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_mode: transaction         # optional, pgbouncer pool mode at database level, default transaction</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_size: 64                  # optional, pgbouncer pool size at database level, default 64</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_reserve: 32               # optional, pgbouncer pool size reserve at database level, default 32</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_size_min: 0               # optional, pgbouncer pool size min at database level, default 0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="c">#pool_connlimit: 100            # optional, max database connections at database level, default 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="c">#- {name: bytebase ,owner: dbuser_bytebase ,revokeconn: true ,comment: bytebase primary database }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_hba_rules</span><span class="p">:</span><span class="w">   </span><span class="c"># https://pigsty.io/docs/pgsql/config/hba</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="nt">all ,db</span><span class="p">:</span><span class="w"> </span><span class="nt">all ,addr</span><span class="p">:</span><span class="w"> </span><span class="nt">intra ,auth</span><span class="p">:</span><span class="w"> </span><span class="nt">pwd ,title</span><span class="p">:</span><span class="w"> </span><span class="nt">&#39;everyone intranet access with password&#39; ,order</span><span class="p">:</span><span class="w"> </span><span class="m">800</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_crontab</span><span class="p">:</span><span class="w">     </span><span class="c"># https://pigsty.io/docs/pgsql/admin/crontab</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="s1">&#39;00 01 * * * /pg/bin/pg-backup full&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c"># define (OPTIONAL) L2 VIP that bind to primary</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_vip_enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_vip_address</span><span class="p">:</span><span class="w"> </span><span class="m">10.10.10.2</span><span class="l">/24</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># INFRA : https://pigsty.io/docs/infra</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">infra</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">infra_seq</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">repo_enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c"># build local repo:  https://pigsty.io/docs/infra/admin/repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c">#repo_extra_packages: [ pg18-main ,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]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">repo_packages</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">node-bootstrap, infra-package, infra-addons, node-package1, node-package2, node-package3, pgsql-utility, extra-modules,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">pg18-full,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,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">pg17-full,pg17-time,pg17-gis,pg17-rag,pg17-fts,pg17-olap,pg17-feat,pg17-lang,pg17-type,pg17-util,pg17-func,pg17-admin,pg17-stat,pg17-sec,pg17-fdw,pg17-sim,pg17-etl,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">pg16-full,pg16-time,pg16-gis,pg16-rag,pg16-fts,pg16-olap,pg16-feat,pg16-lang,pg16-type,pg16-util,pg16-func,pg16-admin,pg16-stat,pg16-sec,pg16-fdw,pg16-sim,pg16-etl,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">pg15-full,pg15-time,pg15-gis,pg15-rag,pg15-fts,pg15-olap,pg15-feat,pg15-lang,pg15-type,pg15-util,pg15-func,pg15-admin,pg15-stat,pg15-sec,pg15-fdw,pg15-sim,pg15-etl,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">pg14-full,pg14-time,pg14-gis,pg14-rag,pg14-fts,pg14-olap,pg14-feat,pg14-lang,pg14-type,pg14-util,pg14-func,pg14-admin,pg14-stat,pg14-sec,pg14-fdw,pg14-sim,pg14-etl,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="l">infra-extra, kafka-stack, java-runtime, sealos, tigerbeetle, polardb, ivorysql</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># ETCD : https://pigsty.io/docs/etcd</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">etcd</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">etcd_seq</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">etcd_cluster</span><span class="p">:</span><span class="w"> </span><span class="l">etcd</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">etcd_safeguard</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">             </span><span class="c"># prevent purging running etcd instance?</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># MINIO : https://pigsty.io/docs/minio</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">minio</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">minio_seq</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">minio_cluster</span><span class="p">:</span><span class="w"> </span><span class="l">minio</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">minio_users</span><span class="p">:</span><span class="w">                      </span><span class="c"># list of minio user to be created</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">access_key</span><span class="p">:</span><span class="w"> </span><span class="nt">pgbackrest  ,secret_key</span><span class="p">:</span><span class="w"> </span><span class="nt">S3User.Backup ,policy</span><span class="p">:</span><span class="w"> </span><span class="l">pgsql }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">access_key</span><span class="p">:</span><span class="w"> </span><span class="nt">s3user_meta ,secret_key</span><span class="p">:</span><span class="w"> </span><span class="nt">S3User.Meta   ,policy</span><span class="p">:</span><span class="w"> </span><span class="l">meta  }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">access_key</span><span class="p">:</span><span class="w"> </span><span class="nt">s3user_data ,secret_key</span><span class="p">:</span><span class="w"> </span><span class="nt">S3User.Data   ,policy</span><span class="p">:</span><span class="w"> </span><span class="l">data  }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># DOCKER : https://pigsty.io/docs/docker</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># APP    : https://pigsty.io/docs/app</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># OPTIONAL, launch example pgadmin app with: ./app.yml &amp; ./app.yml -e app=bytebase</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">app</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{}<span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">docker_enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">                </span><span class="c"># enabled docker with ./docker.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c">#docker_registry_mirrors: [&#34;https://docker.1panel.live&#34;,&#34;https://docker.1ms.run&#34;,&#34;https://docker.xuanyuan.me&#34;,&#34;https://registry-1.docker.io&#34;]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">pgadmin                       </span><span class="w"> </span><span class="c"># specify the default app name to be installed (in the apps)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">apps</span><span class="p">:</span><span class="w">                               </span><span class="c"># define all applications, appname: definition</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="c"># Admin GUI for PostgreSQL, launch with: ./app.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">pgadmin</span><span class="p">:</span><span class="w">                          </span><span class="c"># pgadmin app definition (app/pgadmin -&gt; /opt/pgadmin)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">conf</span><span class="p">:</span><span class="w">                           </span><span class="c"># override /opt/pgadmin/.env</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">PGADMIN_DEFAULT_EMAIL</span><span class="p">:</span><span class="w"> </span><span class="l">admin@pigsty.cc  </span><span class="w"> </span><span class="c"># default user name</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">PGADMIN_DEFAULT_PASSWORD</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty        </span><span class="w"> </span><span class="c"># default password</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="c"># Schema Migration GUI for PostgreSQL, launch with: ./app.yml -e app=bytebase</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">bytebase</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">conf</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">BB_DOMAIN</span><span class="p">:</span><span class="w"> </span><span class="l">http://ddl.pigsty </span><span class="w"> </span><span class="c"># replace it with your public domain name and postgres database url</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">BB_PGURL</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;postgresql://dbuser_bytebase:DBUser.Bytebase@10.10.10.10:5432/bytebase?sslmode=prefer&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="c"># Global Parameters</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># INFRA : https://pigsty.io/docs/infra</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l">v4.5.0                  </span><span class="w"> </span><span class="c"># pigsty version string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">admin_ip</span><span class="p">:</span><span class="w"> </span><span class="m">10.10.10.10</span><span class="w">             </span><span class="c"># admin node ip address</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">region</span><span class="p">:</span><span class="w"> </span><span class="l">default                  </span><span class="w"> </span><span class="c"># upstream mirror region: default|china|europe</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">proxy_env</span><span class="p">:</span><span class="w">                        </span><span class="c"># global proxy env when downloading packages</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">no_proxy</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.myqcloud.com,*.tsinghua.edu.cn&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c"># http_proxy:  # set your proxy here: e.g http://user:pass@proxy.xxx.com</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c"># https_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c"># all_proxy:   # set your proxy here: e.g http://user:pass@proxy.xxx.com</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">certbot_sign</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">               </span><span class="c"># enable certbot to sign https certificate for infra portal</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">certbot_email</span><span class="p">:</span><span class="w"> </span><span class="l">your@email.com    </span><span class="w"> </span><span class="c"># replace your email address to receive expiration notice</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">infra_portal</span><span class="p">:</span><span class="w">                     </span><span class="c"># domain names and upstream servers</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">home         </span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="l">i.pigsty }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">pgadmin      </span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="nt">adm.pigsty ,endpoint</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;${admin_ip}:8885&#34;</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">bytebase     </span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="nt">ddl.pigsty ,endpoint</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;${admin_ip}:8887&#34;</span><span class="w"> </span><span class="nt">,websocket</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">minio        </span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="nt">m.pigsty ,endpoint</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;${admin_ip}:9001&#34;</span><span class="w"> </span><span class="nt">,scheme</span><span class="p">:</span><span class="w"> </span><span class="nt">https ,websocket</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#website:   # static local website example stub</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  domain: repo.pigsty              # external domain name for static site</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  certbot: repo.pigsty             # use certbot to sign https certificate for this static site</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  path: /www/pigsty                # path to the static site directory</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#supabase:  # dynamic upstream service example stub</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  domain: supa.pigsty          # external domain name for upstream service</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  certbot: supa.pigsty         # use certbot to sign https certificate for this upstream server</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  endpoint: &#34;10.10.10.10:8000&#34; # path to the static site directory</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  websocket: true              # add websocket support</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#  certbot: supa.pigsty         # certbot cert name, apply with `make cert`</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># NODE : https://pigsty.io/docs/node/param</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">nodename_overwrite</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">              </span><span class="c"># overwrite node hostname on multi-node template</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_tune</span><span class="p">:</span><span class="w"> </span><span class="l">oltp                      </span><span class="w"> </span><span class="c"># node tuning specs: oltp,olap,tiny,crit</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_etc_hosts</span><span class="p">:</span><span class="w">                       </span><span class="c"># add static domains to all nodes /etc/hosts</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="m">10.10.10.10</span><span class="w"> </span><span class="l">i.pigsty sss.pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="m">10.10.10.10</span><span class="w"> </span><span class="l">adm.pigsty ddl.pigsty repo.pigsty supa.pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_repo_modules</span><span class="p">:</span><span class="w"> </span><span class="l">local,node,infra,pgsql</span><span class="w"> </span><span class="c"># use pre-made local repo rather than install from upstream</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_repo_remove</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">                </span><span class="c"># remove existing node repo for node managed by pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#node_packages: [openssh-server]      # packages to be installed current nodes with latest version</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#node_timezone: Asia/Hong_Kong        # overwrite node timezone</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># PGSQL : https://pigsty.io/docs/pgsql/param</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_version</span><span class="p">:</span><span class="w"> </span><span class="m">18</span><span class="w">                      </span><span class="c"># default postgres version</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_conf</span><span class="p">:</span><span class="w"> </span><span class="l">oltp.yml                  </span><span class="w"> </span><span class="c"># pgsql tuning specs: {oltp,olap,tiny,crit}.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_safeguard</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">                 </span><span class="c"># prevent purging running postgres instance?</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_packages</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="l">pgsql-main, pgsql-common ]</span><span class="w"> </span><span class="c"># pg kernel and common utils</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#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]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># BACKUP : https://pigsty.io/docs/pgsql/backup</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># if you want to use minio as backup repo instead of &#39;local&#39; fs, uncomment this, and configure `pgbackrest_repo`</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># you can also use external object storage as backup repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pgbackrest_method</span><span class="p">:</span><span class="w"> </span><span class="l">minio         </span><span class="w"> </span><span class="c"># if you want to use minio as backup repo instead of &#39;local&#39; fs, uncomment this</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pgbackrest_repo</span><span class="p">:</span><span class="w">                  </span><span class="c"># pgbackrest repo: https://pgbackrest.org/configuration.html#section-repository</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">local</span><span class="p">:</span><span class="w">                          </span><span class="c"># default pgbackrest repo with local posix fs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/pg/backup             </span><span class="w"> </span><span class="c"># local backup directory, `/pg/backup` by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">retention_full_type</span><span class="p">:</span><span class="w"> </span><span class="l">count   </span><span class="w"> </span><span class="c"># retention full backups by count</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">retention_full</span><span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">             </span><span class="c"># keep 2, at most 3 full backups when using local fs repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">minio</span><span class="p">:</span><span class="w">                          </span><span class="c"># optional minio repo for pgbackrest</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">s3                     </span><span class="w"> </span><span class="c"># minio is s3-compatible, so s3 is used</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_endpoint</span><span class="p">:</span><span class="w"> </span><span class="l">sss.pigsty      </span><span class="w"> </span><span class="c"># minio endpoint domain name, `sss.pigsty` by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_region</span><span class="p">:</span><span class="w"> </span><span class="l">us-east-1         </span><span class="w"> </span><span class="c"># minio region, us-east-1 by default, useless for minio</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_bucket</span><span class="p">:</span><span class="w"> </span><span class="l">pgsql             </span><span class="w"> </span><span class="c"># minio bucket name, `pgsql` by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_key</span><span class="p">:</span><span class="w"> </span><span class="l">pgbackrest           </span><span class="w"> </span><span class="c"># minio user access key for pgbackrest [CHANGE ACCORDING to minio_users.pgbackrest]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_key_secret</span><span class="p">:</span><span class="w"> </span><span class="l">S3User.Backup </span><span class="w"> </span><span class="c"># minio user secret key for pgbackrest [CHANGE ACCORDING to minio_users.pgbackrest]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_uri_style</span><span class="p">:</span><span class="w"> </span><span class="l">path           </span><span class="w"> </span><span class="c"># use path style uri for minio rather than host style</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/pgbackrest            </span><span class="w"> </span><span class="c"># minio backup path, default is `/pgbackrest`</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">storage_port</span><span class="p">:</span><span class="w"> </span><span class="m">9000</span><span class="w">            </span><span class="c"># minio port, 9000 by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">storage_ca_file</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/pki/ca.crt </span><span class="w"> </span><span class="c"># minio ca file path, `/etc/pki/ca.crt` by default</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">block</span><span class="p">:</span><span class="w"> </span><span class="kc">y</span><span class="w">                      </span><span class="c"># Enable block incremental backup</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">bundle</span><span class="p">:</span><span class="w"> </span><span class="kc">y</span><span class="w">                     </span><span class="c"># bundle small files into a single file</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">bundle_limit</span><span class="p">:</span><span class="w"> </span><span class="l">20MiB          </span><span class="w"> </span><span class="c"># Limit for file bundles, 20MiB for object storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">bundle_size</span><span class="p">:</span><span class="w"> </span><span class="l">128MiB          </span><span class="w"> </span><span class="c"># Target size for file bundles, 128MiB for object storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">cipher_type</span><span class="p">:</span><span class="w"> </span><span class="l">aes-256-cbc     </span><span class="w"> </span><span class="c"># enable AES encryption for remote backup repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">cipher_pass</span><span class="p">:</span><span class="w"> </span><span class="l">pgBackRest      </span><span class="w"> </span><span class="c"># AES encryption password, default is &#39;pgBackRest&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">retention_full_type</span><span class="p">:</span><span class="w"> </span><span class="l">time    </span><span class="w"> </span><span class="c"># retention full backup by time on minio repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">retention_full</span><span class="p">:</span><span class="w"> </span><span class="m">14</span><span class="w">            </span><span class="c"># keep full backup for the last 14 days</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">s3</span><span class="p">:</span><span class="w">                             </span><span class="c"># you can use cloud object storage as backup repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">s3                     </span><span class="w"> </span><span class="c"># Add your object storage credentials here!</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_endpoint</span><span class="p">:</span><span class="w"> </span><span class="l">oss-cn-beijing-internal.aliyuncs.com</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_region</span><span class="p">:</span><span class="w"> </span><span class="l">oss-cn-beijing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_bucket</span><span class="p">:</span><span class="w"> </span><span class="l">&lt;your_bucket_name&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_key</span><span class="p">:</span><span class="w"> </span><span class="l">&lt;your_access_key&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_key_secret</span><span class="p">:</span><span class="w"> </span><span class="l">&lt;your_secret_key&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">s3_uri_style</span><span class="p">:</span><span class="w"> </span><span class="l">host</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/pgbackrest</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">bundle</span><span class="p">:</span><span class="w"> </span><span class="kc">y</span><span class="w">                     </span><span class="c"># bundle small files into a single file</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">bundle_limit</span><span class="p">:</span><span class="w"> </span><span class="l">20MiB          </span><span class="w"> </span><span class="c"># Limit for file bundles, 20MiB for object storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">bundle_size</span><span class="p">:</span><span class="w"> </span><span class="l">128MiB          </span><span class="w"> </span><span class="c"># Target size for file bundles, 128MiB for object storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">cipher_type</span><span class="p">:</span><span class="w"> </span><span class="l">aes-256-cbc     </span><span class="w"> </span><span class="c"># enable AES encryption for remote backup repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">cipher_pass</span><span class="p">:</span><span class="w"> </span><span class="l">pgBackRest      </span><span class="w"> </span><span class="c"># AES encryption password, default is &#39;pgBackRest&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">retention_full_type</span><span class="p">:</span><span class="w"> </span><span class="l">time    </span><span class="w"> </span><span class="c"># retention full backup by time on minio repo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">retention_full</span><span class="p">:</span><span class="w"> </span><span class="m">14</span><span class="w">            </span><span class="c"># keep full backup for the last 14 days</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># PASSWORD : https://pigsty.io/docs/setup/security/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">grafana_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">grafana_view_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Viewer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.DBA</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_monitor_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Monitor</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_replication_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Replicator</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">patroni_password</span><span class="p">:</span><span class="w"> </span><span class="l">Patroni.API</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">haproxy_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">minio_secret_key</span><span class="p">:</span><span class="w"> </span><span class="l">S3User.MinIO</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">etcd_root_password</span><span class="p">:</span><span class="w"> </span><span class="l">Etcd.Root</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">...</span><span class="w">
</span></span></span></code></pre></div>


--------

## 配置解读

`fat` 模板是 Pigsty 的 **全功能测试配置**，专为完整性测试和离线包构建设计。

**关键特性**：
- **全扩展安装**：安装 PostgreSQL 18 的所有分类扩展包
- **多版本软件源**：本地软件源包含 PostgreSQL 14-18 全部五个大版本
- **完整组件栈**：包含 Silo 备份、Docker 应用、VIP 等功能
- **企业级组件**：包含 Kafka、PolarDB、IvorySQL、TigerBeetle 等

**软件源内容**：

| 分类 | 说明 |
|:--|:--|
| PostgreSQL 14-18 | 五个大版本的内核和全部扩展 |
| 扩展分类包 | `time`, `gis`, `rag`, `fts`, `olap`, `feat`, `lang`, `type`, `util`, `func`, `admin`, `stat`, `sec`, `fdw`, `sim`, `etl` |
| 企业组件 | `kafka-stack`、Java 运行时、Sealos、TigerBeetle |
| 数据库内核 | PolarDB、IvorySQL |

**与 rich 的区别**：
- `fat` 包含 PostgreSQL 14-18 全部五个版本，`rich` 只包含当前默认版本
- `fat` 包含额外的企业组件（Kafka、PolarDB、IvorySQL 等）
- `fat` 需要更大的磁盘空间和更长的构建时间

**适用场景**：
- Pigsty 开发测试与功能验证
- 构建完整的多版本离线软件包
- 需要测试全部扩展兼容性的场景
- 企业环境预先缓存所有软件包

**注意事项**：
- 需要较大磁盘空间（建议 100GB+）用于存储所有软件包
- 构建本地软件源需要较长时间
- 部分扩展在 ARM64 架构不可用
- 默认密码为示例密码，生产环境务必修改
