参数列表
Module:
Categories:
INFRA 模块提供了 56 个关于基础设施组件的参数:本地软件源,Nginx,DNSMasq,Prometheus,Grafana,Loki,Alertmanager,Pushgateway,Blackbox_exporter 等…
参数 | 参数组 | 类型 | 层次 | 中文说明 |
---|---|---|---|---|
version |
META |
string |
G | pigsty 版本字符串 |
admin_ip |
META |
ip |
G | 管理节点 IP 地址 |
region |
META |
enum |
G | 上游镜像区域:default,china,europe |
proxy_env |
META |
dict |
G | 下载包时使用的全局代理环境变量 |
ca_method |
CA |
enum |
G | CA处理方式:create,recreate,copy,默认为没有则创建 |
ca_cn |
CA |
string |
G | CA CN名称,固定为 pigsty-ca |
cert_validity |
CA |
interval |
G | 证书有效期,默认为 20 年 |
infra_seq |
INFRA_ID |
int |
I | 基础设施节号,必选身份参数 |
infra_portal |
INFRA_ID |
dict |
G | 通过Nginx门户暴露的基础设施服务列表 |
repo_enabled |
REPO |
bool |
G/I | 在此基础设施节点上创建软件仓库? |
repo_home |
REPO |
path |
G | 软件仓库主目录,默认为/www |
repo_name |
REPO |
string |
G | 软件仓库名称,默认为 pigsty |
repo_endpoint |
REPO |
url |
G | 仓库的访问点:域名或 ip:port 格式 |
repo_remove |
REPO |
bool |
G/A | 构建本地仓库时是否移除现有上游仓库源定义文件? |
repo_modules |
REPO |
string |
G/A | 启用的上游仓库模块列表,用逗号分隔 |
repo_upstream |
REPO |
upstream[] |
G | 上游仓库源定义:从哪里下载上游包? |
repo_packages |
REPO |
string[] |
G | 从上游仓库下载哪些软件包? |
repo_extra_packages |
REPO |
string[] |
G/C/I | 从上游仓库下载哪些额外的软件包? |
repo_url_packages |
REPO |
string[] |
G | 使用URL下载的额外软件包列表 |
infra_packages |
INFRA_PACKAGE |
string[] |
G | 在基础设施节点上要安装的软件包 |
infra_packages_pip |
INFRA_PACKAGE |
string |
G | 在基础设施节点上使用 pip 安装的包 |
nginx_enabled |
NGINX |
bool |
G/I | 在此基础设施节点上启用 nginx? |
nginx_exporter_enabled |
NGINX |
bool |
G/I | 在此基础设施节点上启用 nginx_exporter? |
nginx_sslmode |
NGINX |
enum |
G | nginx SSL模式?disable,enable,enforce |
nginx_home |
NGINX |
path |
G | nginx 内容目录,默认为 /www ,通常和仓库目录一致 |
nginx_port |
NGINX |
port |
G | nginx 监听端口,默认为 80 |
nginx_ssl_port |
NGINX |
port |
G | nginx SSL监听端口,默认为 443 |
nginx_navbar |
NGINX |
index[] |
G | nginx 首页导航链接列表 |
dns_enabled |
DNS |
bool |
G/I | 在此基础设施节点上设置dnsmasq? |
dns_port |
DNS |
port |
G | DNS 服务器监听端口,默认为 53 |
dns_records |
DNS |
string[] |
G | 由 dnsmasq 解析的动态 DNS 记录 |
prometheus_enabled |
PROMETHEUS |
bool |
G/I | 在此基础设施节点上启用 prometheus? |
prometheus_clean |
PROMETHEUS |
bool |
G/A | 初始化Prometheus的时候清除现有数据? |
prometheus_data |
PROMETHEUS |
path |
G | Prometheus 数据目录,默认为 /data/prometheus |
prometheus_sd_dir |
PROMETHEUS |
path |
G | Prometheus 服务发现目标文件目录 |
prometheus_sd_interval |
PROMETHEUS |
interval |
G | Prometheus 目标刷新间隔,默认为 5s |
prometheus_scrape_interval |
PROMETHEUS |
interval |
G | Prometheus 抓取 & 评估间隔,默认为 10s |
prometheus_scrape_timeout |
PROMETHEUS |
interval |
G | Prometheus 全局抓取超时,默认为 8s |
prometheus_options |
PROMETHEUS |
arg |
G | Prometheus 额外的命令行参数选项 |
pushgateway_enabled |
PROMETHEUS |
bool |
G/I | 在此基础设施节点上设置 pushgateway? |
pushgateway_options |
PROMETHEUS |
arg |
G | pushgateway 额外的命令行参数选项 |
blackbox_enabled |
PROMETHEUS |
bool |
G/I | 在此基础设施节点上设置 blackbox_exporter? |
blackbox_options |
PROMETHEUS |
arg |
G | blackbox_exporter 额外的命令行参数选项 |
alertmanager_enabled |
PROMETHEUS |
bool |
G/I | 在此基础设施节点上设置 alertmanager? |
alertmanager_options |
PROMETHEUS |
arg |
G | alertmanager 额外的命令行参数选项 |
exporter_metrics_path |
PROMETHEUS |
path |
G | exporter 指标路径,默认为 /metrics |
exporter_install |
PROMETHEUS |
enum |
G | 如何安装 exporter?none,yum,binary |
exporter_repo_url |
PROMETHEUS |
url |
G | 通过 yum 安装exporter时使用的yum仓库文件地址 |
grafana_enabled |
GRAFANA |
bool |
G/I | 在此基础设施节点上启用 Grafana? |
grafana_clean |
GRAFANA |
bool |
G/A | 初始化Grafana期间清除数据? |
grafana_admin_username |
GRAFANA |
username |
G | Grafana 管理员用户名,默认为 admin |
grafana_admin_password |
GRAFANA |
password |
G | Grafana 管理员密码,默认为 pigsty |
loki_enabled |
LOKI |
bool |
G/I | 在此基础设施节点上启用 loki? |
loki_clean |
LOKI |
bool |
G/A | 是否删除现有的 loki 数据? |
loki_data |
LOKI |
path |
G | loki 数据目录,默认为 /data/loki |
loki_retention |
LOKI |
interval |
G | loki 日志保留期,默认为 15d |
META
这一小节指定了一套 Pigsty 部署的元数据:包括版本号,管理员节点 IP 地址,软件源镜像上游区域
和下载软件包时使用的 http(s) 代理。
version: v3.3.0 # pigsty 版本号
admin_ip: 10.10.10.10 # 管理节点IP地址
region: default # 上游镜像区域:default,china,europe
proxy_env: # 全局HTTPS代理,用于下载、安装软件包。
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
version
参数名称: version
, 类型: string
, 层次:G
Pigsty 版本号字符串,默认值为当前版本:v3.3.0
。
Pigsty 内部会使用版本号进行功能控制与内容渲染。
Pigsty使用语义化版本号,版本号字符串通常以字符 v
开头。
admin_ip
参数名称: admin_ip
, 类型: ip
, 层次:G
管理节点的 IP 地址,默认为占位符 IP 地址:10.10.10.10
由该参数指定的节点将被视为管理节点,通常指向安装 Pigsty 时的第一个节点,即中控节点。
默认值 10.10.10.10
是一个占位符,会在 configure 过程中被替换为实际的管理节点 IP 地址。
许多参数都会引用此参数,例如:
在这些参数中,字符串 ${admin_ip}
会被替换为 admin_ip
的真实取值。使用这种机制,您可以为不同的节点指定不同的中控管理节点。
region
参数名称: region
, 类型: enum
, 层次:G
上游镜像的区域,默认可选值为:upstream mirror region: default,china,europe,默认为: default
如果一个不同于 default
的区域被设置,且在 repo_upstream
中有对应的条目,将会使用该条目对应 baseurl
代替 default
中的 baseurl
。
例如,如果您的区域被设置为 china
,那么 Pigsty 会尝试使用中国地区的上游软件镜像站点以加速下载,如果某个上游软件仓库没有对应的中国地区镜像,那么会使用默认的上游镜像站点替代。
同时,在 repo_url_packages
中定义的 URL 地址,也会进行从 repo.pigsty.io
到 repo.pigsty.cc
的替换,以使用国内的镜像源。
proxy_env
参数名称: proxy_env
, 类型: dict
, 层次:G
下载包时使用的全局代理环境变量,默认值指定了 no_proxy
,即不使用代理的地址列表:
proxy_env:
no_proxy: "localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.aliyuncs.com,mirrors.tuna.tsinghua.edu.cn,mirrors.zju.edu.cn"
#http_proxy: 'http://username:password@proxy.address.com'
#https_proxy: 'http://username:password@proxy.address.com'
#all_proxy: 'http://username:password@proxy.address.com'
当您在中国大陆地区从互联网上游安装时,特定的软件包可能会被墙,您可以使用代理来解决这个问题。
请注意,如果使用了 Docker 模块,那么这里的代理服务器配置也会写入 Docker Daemon 配置文件中。
请注意,如果在 ./configure
过程中指定了 -x
参数,那么当前环境中的代理配置信息将会被自动填入到生成的 pigsty.yaml
文件中。
CA
Pigsty 使用的自签名 CA 证书,用于支持高级安全特性。
ca_method: create # CA处理方式:create,recreate,copy,默认为没有则创建
ca_cn: pigsty-ca # CA CN名称,固定为 pigsty-ca
cert_validity: 7300d # 证书有效期,默认为 20 年
ca_method
参数名称: ca_method
, 类型: enum
, 层次:G
CA处理方式:create
, recreate
,copy
,默认为没有则创建
默认值为: create
,即如果不存在则创建一个新的 CA 证书。
create
:如果files/pki/ca
中不存在现有的CA,则创建一个全新的 CA 公私钥对,否则就直接使用现有的 CA 公私钥对。recreate
:总是创建一个新的 CA 公私钥对,覆盖现有的 CA 公私钥对。注意,这是一个危险的操作。copy
:假设files/pki/ca
目录下已经有了一对CA公私钥对,并将ca_method
设置为copy
,Pigsty 将会使用现有的 CA 公私钥对。如果不存在则会报错
如果您已经有了一对 CA 公私钥对,可以将其复制到 files/pki/ca
目录下,并将 ca_method
设置为 copy
,Pigsty 将会使用现有的 CA 公私钥对,而不是新建一个。
请注意,务必保留并备份好一套部署新生成的 CA 私钥文件。
ca_cn
参数名称: ca_cn
, 类型: string
, 层次:G
CA CN名称,固定为 pigsty-ca
,不建议修改。
你可以使用以下命令来查看节点上的 Pigsty CA 证书: openssl x509 -text -in /etc/pki/ca.crt
cert_validity
参数名称: cert_validity
, 类型: interval
, 层次:G
签发证书的有效期,默认为 20 年,对绝大多数场景都足够了。默认值为: 7300d
INFRA_ID
Infrastructure identity and portal definition.
#infra_seq: 1 # infra node identity, explicitly required
infra_portal: # infra services exposed via portal
home : { domain: h.pigsty }
grafana : { domain: g.pigsty ,endpoint: "${admin_ip}:3000" ,websocket: true }
prometheus : { domain: p.pigsty ,endpoint: "${admin_ip}:9090" }
alertmanager : { domain: a.pigsty ,endpoint: "${admin_ip}:9093" }
blackbox : { endpoint: "${admin_ip}:9115" }
loki : { endpoint: "${admin_ip}:3100" }
infra_seq
参数名称: infra_seq
, 类型: int
, 层次:I
基础设施节号,必选身份参数,所以不提供默认值,必须在基础设施节点上显式指定。
infra_portal
参数名称: infra_portal
, 类型: dict
, 层次:G
通过Nginx门户暴露的基础设施服务列表,默认情况下,Pigsty 会通过 Nginx 对外暴露以下服务:
infra_portal:
home : { domain: h.pigsty }
grafana : { domain: g.pigsty ,endpoint: "${admin_ip}:3000" ,websocket: true }
prometheus : { domain: p.pigsty ,endpoint: "${admin_ip}:9090" }
alertmanager : { domain: a.pigsty ,endpoint: "${admin_ip}:9093" }
blackbox : { endpoint: "${admin_ip}:9115" }
loki : { endpoint: "${admin_ip}:3100" }
每条记录由一个 Key 与一个 Value 字典组成,name
作为键,代表组件名称,value 中唯一一个必选字段为 domain
,代表域名。
domain
是用于外部访问此上游服务器的域名。域名将被添加到Nginx SSL证书的SAN
字段中,此字段为必选项目。- 默认记录 的
name
是固定的,其他模块会引用它,所以不要修改默认条目的 名称。
- 默认记录 的
endpoint
是一个可以内部访问的TCP端口,如果指定,Nginx会将请求转发至此 endpoint 指定的地址。endpoint
中 如果包含${admin_ip}
,则将在运行时被实际的admin_ip
替换。
path
是一个可以本地访问的路径,如果指定将作为本地 Web 服务器的根,Nginx会将domain
对应的请求转发至这里。endpoint
与path
互斥,你只能在一个条目中二选一:是上游 Proxy,还是本地 Web Server。
- 如果
websocket
设置为true
,http协议将自动为 Websocket 连接升级。- 当上游用到 WebSocket 时,可以启用此选项(例如 Grafana/Jupyter)
- 如果给定了
scheme
(http
或https
),它将被用作 proxy_pass URL的一部分。- 作为 Proxy 时,当上游要求 Proxy 使用 HTTPS 而不是 HTTP 时使用此选项。(例如 MinIO )
REPO
本节配置是关于本地软件仓库的。 Pigsty 默认会在基础设施节点上启用一个本地软件仓库(APT / YUM)。
在初始化过程中,Pigsty 会从互联网上游仓库(由 repo_upstream
指定)下载所有软件包及其依赖项(由 repo_packages
指定)
到 {{ nginx_home }}
/ {{ repo_name }}
(默认为 /www/pigsty
),所有软件及其依赖的总大小约为1GB左右。
创建本地软件仓库时,如果仓库已存在(判断方式:仓库目录目录中有一个名为 repo_complete
的标记文件)Pigsty 将认为仓库已经创建完成,跳过软件下载阶段,直接使用构建好的仓库。
如果某些软件包的下载速度太慢,您可以通过使用 proxy_env
配置项来设置下载代理来完成首次下载,或直接下载预打包的 离线软件包,离线软件包本质上就是在同样操作系统上构建好的本地软件源。
repo_enabled: true # create a yum repo on this infra node?
repo_home: /www # repo home dir, `/www` by default
repo_name: pigsty # repo name, pigsty by default
repo_endpoint: http://${admin_ip}:80 # access point to this repo by domain or ip:port
repo_remove: true # remove existing upstream repo
repo_modules: infra,node,pgsql # install upstream repo during repo bootstrap
#repo_upstream: [] # where to download
#repo_packages: [] # which packages to download
#repo_extra_packages: [] # extra packages to download
repo_url_packages: [] # extra packages from url
repo_enabled
参数名称: repo_enabled
, 类型: bool
, 层次:G/I
是否在当前的基础设施节点上启用本地软件源?默认为: true
,即所有 Infra 节点都会设置一个本地软件仓库。
如果您有多个基础设施节点,可以只保留 1 ~ 2 个节点作为软件仓库,其他节点可以通过设置此参数为 false
来避免重复软件下载构建。
repo_home
参数名称: repo_home
, 类型: path
, 层次:G
本地软件仓库的家目录,默认为 Nginx 的根目录,也就是: /www
,我们不建议您修改此目录。如果修改,需要和 nginx_home
repo_name
参数名称: repo_name
, 类型: string
, 层次:G
本地仓库名称,默认为 pigsty
,更改此仓库的名称是不明智的行为。
repo_endpoint
参数名称: repo_endpoint
, 类型: url
, 层次:G
其他节点访问此仓库时使用的端点,默认值为:http://${admin_ip}:80
。
Pigsty 默认会在基础设施节点 80/443 端口启动 Nginx,对外提供本地软件源(静态文件)服务。
如果您修改了 nginx_port
与 nginx_ssl_port
,或者使用了不同于中控节点的基础设施节点,请相应调整此参数。
如果您使用了域名,可以在 node_default_etc_hosts
、node_etc_hosts
、或者 dns_records
中添加解析。
repo_remove
参数名称: repo_remove
, 类型: bool
, 层次:G/A
在构建本地软件源时,是否移除现有的上游仓库定义?默认值: true
。
当启用此参数时,/etc/yum.repos.d
中所有已有仓库文件会被移动备份至/etc/yum.repos.d/backup
,在 Debian 系上是移除 /etc/apt/sources.list
和 /etc/apt/sources.list.d
,将文件备份至 /etc/apt/backup
中。
因为操作系统已有的源内容不可控,使用 Pigsty 验证过的上游软件源可以提高从互联网下载软件包的成功率与速度。
但在一些特定情况下(例如您的操作系统是某种 EL/Deb 兼容版,许多软件包使用了自己的私有源),您可能需要保留现有的上游仓库定义,此时可以将此参数设置为 false
。
repo_modules
参数名称: repo_modules
, 类型: string
, 层次:G/A
哪些上游仓库模块会被添加到本地软件源中,默认值: infra,node,pgsql
当 Pigsty 尝试添加上游仓库时,会根据此参数的值来过滤 repo_upstream
中的条目,只有 module
字段与此参数值匹配的条目才会被添加到本地软件源中。
模块以逗号分隔,可用的模块列表请参考 repo_upstream
中的定义
repo_upstream
参数名称: repo_upstream
, 类型: upstream[]
, 层次:G
构建本地软件源时,从哪里下载上游软件包?本参数没有默认值,如果用户不在配置文件中显式指定,则会从根据当前节点的操作系统族,从定义于 roles/node_id/vars
中的 repo_upstream_default
变量中加载获取。
对于 EL (7,8,9)系统,默认使用的软件源如下所示:
- { name: pigsty-local ,description: 'Pigsty Local' ,module: local ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://${admin_ip}/pigsty' }} # used by intranet nodes
- { name: pigsty-infra ,description: 'Pigsty INFRA' ,module: infra ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.pigsty.io/yum/infra/$basearch' ,china: 'https://repo.pigsty.cc/yum/infra/$basearch' }}
- { name: pigsty-pgsql ,description: 'Pigsty PGSQL' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.pigsty.io/yum/pgsql/el$releasever.$basearch' ,china: 'https://repo.pigsty.cc/yum/pgsql/el$releasever.$basearch' }}
- { name: nginx ,description: 'Nginx Repo' ,module: infra ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://nginx.org/packages/rhel/$releasever/$basearch/' }}
- { name: baseos ,description: 'EL 8+ BaseOS' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/BaseOS/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/BaseOS/$basearch/os/' }}
- { name: appstream ,description: 'EL 8+ AppStream' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/AppStream/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/AppStream/$basearch/os/' }}
- { name: extras ,description: 'EL 8+ Extras' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/extras/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/extras/$basearch/os/' }}
- { name: powertools ,description: 'EL 8 PowerTools' ,module: node ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/PowerTools/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/PowerTools/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/PowerTools/$basearch/os/' }}
- { name: crb ,description: 'EL 9 CRB' ,module: node ,releases: [ 9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/CRB/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/CRB/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/CRB/$basearch/os/' }}
- { name: epel ,description: 'EL 8+ EPEL' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch/' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch/' ,europe: 'https://mirrors.xtom.de/epel/$releasever/Everything/$basearch/' }}
- { name: pgdg-common ,description: 'PostgreSQL Common' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/redhat/rhel-$releasever-$basearch' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg-extras ,description: 'PostgreSQL Extra' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/pgdg-rhel$releasever-extras/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/pgdg-rhel$releasever-extras/redhat/rhel-$releasever-$basearch' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/pgdg-rhel$releasever-extras/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg-el8fix ,description: 'PostgreSQL EL8FIX' ,module: pgsql ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/pgdg-centos8-sysupdates/redhat/rhel-8-x86_64/' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/pgdg-centos8-sysupdates/redhat/rhel-8-x86_64/' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/pgdg-centos8-sysupdates/redhat/rhel-8-x86_64/' } }
- { name: pgdg-el9fix ,description: 'PostgreSQL EL9FIX' ,module: pgsql ,releases: [ 9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/pgdg-rocky9-sysupdates/redhat/rhel-9-x86_64/' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/pgdg-rocky9-sysupdates/redhat/rhel-9-x86_64/' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/pgdg-rocky9-sysupdates/redhat/rhel-9-x86_64/' }}
- { name: pgdg17 ,description: 'PostgreSQL 17' ,module: pgsql ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/17/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/17/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/17/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg17-nonfree ,description: 'PostgreSQL 17+' ,module: pgsql ,releases: [ 8,9] ,arch: [x86_64 ] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' }}
- { name: timescaledb ,description: 'TimescaleDB' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://packagecloud.io/timescale/timescaledb/el/$releasever/$basearch' }}
# these repos are not used by default, but can be enabled by setting repo_modules
- { name: pgdg12 ,description: 'PostgreSQL 12' ,module: pg12 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/12/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/12/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg12-nonfree ,description: 'PostgreSQL 12+' ,module: pg12 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/12/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/non-free/12/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/12/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg13 ,description: 'PostgreSQL 13' ,module: pg13 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/13/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/13/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg13-nonfree ,description: 'PostgreSQL 13+' ,module: pg13 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/13/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/non-free/13/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/13/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg14 ,description: 'PostgreSQL 14' ,module: pg14 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/14/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/14/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/14/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg14-nonfree ,description: 'PostgreSQL 14+' ,module: pg14 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/14/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/non-free/14/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/14/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg15 ,description: 'PostgreSQL 15' ,module: pg15 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/15/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/15/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg15-nonfree ,description: 'PostgreSQL 15+' ,module: pg15 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/15/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/non-free/15/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/15/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg16 ,description: 'PostgreSQL 16' ,module: pg16 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/16/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/16/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg16-nonfree ,description: 'PostgreSQL 16+' ,module: pg16 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/16/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/non-free/16/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/16/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg17 ,description: 'PostgreSQL 17' ,module: pg17 ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/17/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/17/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/17/redhat/rhel-$releasever-$basearch' }}
- { name: pgdg17-nonfree ,description: 'PostgreSQL 17+' ,module: pg17 ,releases: [7,8,9] ,arch: [x86_64 ] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' }}
- { name: docker-ce ,description: 'Docker CE' ,module: docker ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.docker.com/linux/centos/$releasever/$basearch/stable' ,china: 'https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable' ,europe: 'https://mirrors.xtom.de/docker-ce/linux/centos/$releasever/$basearch/stable' }}
- { name: kubernetes ,description: 'Kubernetes' ,module: kube ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://pkgs.k8s.io/core:/stable:/v1.31/rpm/', china: 'https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/' }}
- { name: wiltondb ,description: 'WiltonDB' ,module: mssql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.copr.fedorainfracloud.org/results/wiltondb/wiltondb/epel-$releasever-$basearch/', china: 'https://repo.pigsty.cc/yum/mssql/el$releasever.$basearch' }}
- { name: ivorysql ,description: 'IvorySQL' ,module: ivory ,releases: [7,8,9] ,arch: [x86_64 ] ,baseurl: { default: 'https://repo.pigsty.io/yum/ivory/el$releasever.$basearch', china: 'https://repo.pigsty.cc/yum/ivory/el$releasever.$basearch' }}
- { name: mysql ,description: 'MySQL' ,module: mysql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.mysql.com/yum/mysql-8.0-community/el/$releasever/$basearch/', china: 'https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-$basearch/' }}
- { name: grafana ,description: 'Grafana' ,module: grafana ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://rpm.grafana.com' }}
对于 Debian (11,12)或 Ubuntu (20.04,22.04),默认使用的软件源如下所示:
- { name: pigsty-local ,description: 'Pigsty Local' ,module: local ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://${admin_ip}/pigsty ./' }}
- { name: pigsty-pgsql ,description: 'Pigsty PgSQL' ,module: pgsql ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.pigsty.io/apt/pgsql/${distro_codename} ${distro_codename} main', china: 'https://repo.pigsty.cc/apt/pgsql/${distro_codename} ${distro_codename} main' }}
- { name: pigsty-infra ,description: 'Pigsty Infra' ,module: infra ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.pigsty.io/apt/infra/ generic main' ,china: 'https://repo.pigsty.cc/apt/infra/ generic main' }}
- { name: nginx ,description: 'Nginx' ,module: infra ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://nginx.org/packages/${distro_name} ${distro_codename} nginx' }}
- { name: base ,description: 'Debian Basic' ,module: node ,releases: [11,12 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://deb.debian.org/debian/ ${distro_codename} main non-free-firmware' ,china: 'https://mirrors.aliyun.com/debian/ ${distro_codename} main restricted universe multiverse' }}
- { name: updates ,description: 'Debian Updates' ,module: node ,releases: [11,12 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://deb.debian.org/debian/ ${distro_codename}-updates main non-free-firmware' ,china: 'https://mirrors.aliyun.com/debian/ ${distro_codename}-updates main restricted universe multiverse' }}
- { name: security ,description: 'Debian Security' ,module: node ,releases: [11,12 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://security.debian.org/debian-security ${distro_codename}-security main non-free-firmware' }}
- { name: base ,description: 'Ubuntu Basic' ,module: node ,releases: [ 20,22,24] ,arch: [x86_64 ] ,baseurl: { default: 'https://mirrors.edge.kernel.org/ubuntu/ ${distro_codename} main universe multiverse restricted' ,china: 'https://mirrors.aliyun.com/ubuntu/ ${distro_codename} main restricted universe multiverse' }}
- { name: updates ,description: 'Ubuntu Updates' ,module: node ,releases: [ 20,22,24] ,arch: [x86_64 ] ,baseurl: { default: 'https://mirrors.edge.kernel.org/ubuntu/ ${distro_codename}-backports main restricted universe multiverse' ,china: 'https://mirrors.aliyun.com/ubuntu/ ${distro_codename}-updates main restricted universe multiverse' }}
- { name: backports ,description: 'Ubuntu Backports' ,module: node ,releases: [ 20,22,24] ,arch: [x86_64 ] ,baseurl: { default: 'https://mirrors.edge.kernel.org/ubuntu/ ${distro_codename}-security main restricted universe multiverse' ,china: 'https://mirrors.aliyun.com/ubuntu/ ${distro_codename}-backports main restricted universe multiverse' }}
- { name: security ,description: 'Ubuntu Security' ,module: node ,releases: [ 20,22,24] ,arch: [x86_64 ] ,baseurl: { default: 'https://mirrors.edge.kernel.org/ubuntu/ ${distro_codename}-updates main restricted universe multiverse' ,china: 'https://mirrors.aliyun.com/ubuntu/ ${distro_codename}-security main restricted universe multiverse' }}
- { name: base ,description: 'Ubuntu Basic' ,module: node ,releases: [ 20,22,24] ,arch: [ aarch64] ,baseurl: { default: 'http://ports.ubuntu.com/ubuntu-ports/ ${distro_codename} main universe multiverse restricted' ,china: 'https://mirrors.aliyun.com/ubuntu-ports/ ${distro_codename} main restricted universe multiverse' }}
- { name: updates ,description: 'Ubuntu Updates' ,module: node ,releases: [ 20,22,24] ,arch: [ aarch64] ,baseurl: { default: 'http://ports.ubuntu.com/ubuntu-ports/ ${distro_codename}-backports main restricted universe multiverse' ,china: 'https://mirrors.aliyun.com/ubuntu-ports/ ${distro_codename}-updates main restricted universe multiverse' }}
- { name: backports ,description: 'Ubuntu Backports' ,module: node ,releases: [ 20,22,24] ,arch: [ aarch64] ,baseurl: { default: 'http://ports.ubuntu.com/ubuntu-ports/ ${distro_codename}-security main restricted universe multiverse' ,china: 'https://mirrors.aliyun.com/ubuntu-ports/ ${distro_codename}-backports main restricted universe multiverse' }}
- { name: security ,description: 'Ubuntu Security' ,module: node ,releases: [ 20,22,24] ,arch: [ aarch64] ,baseurl: { default: 'http://ports.ubuntu.com/ubuntu-ports/ ${distro_codename}-updates main restricted universe multiverse' ,china: 'https://mirrors.aliyun.com/ubuntu-ports/ ${distro_codename}-security main restricted universe multiverse' }}
- { name: pgdg ,description: 'PGDG' ,module: pgsql ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://apt.postgresql.org/pub/repos/apt/ ${distro_codename}-pgdg main' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ ${distro_codename}-pgdg main' }}
- { name: citus ,description: 'Citus' ,module: pgsql ,releases: [11,12,20,22 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://packagecloud.io/citusdata/community/${distro_name}/ ${distro_codename} main' } }
- { name: timescaledb ,description: 'Timescaledb' ,module: pgsql ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://packagecloud.io/timescale/timescaledb/${distro_name}/ ${distro_codename} main' }}
# these repos are not used by default, but can be enabled by setting repo_modules
- { name: grafana ,description: 'Grafana' ,module: grafana ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://apt.grafana.com stable main' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/ stable main' }}
- { name: pgml ,description: 'PostgresML' ,module: pgml ,releases: [ 22 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://apt.postgresml.org ${distro_codename} main' }}
- { name: wiltondb ,description: 'WiltonDB' ,module: mssql ,releases: [ 20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://ppa.launchpadcontent.net/wiltondb/wiltondb/ubuntu/ ${distro_codename} main', china: 'https://repo.pigsty.cc/apt/mssql/ ${distro_codename} main' }}
- { name: mysql ,description: 'MySQL' ,module: mysql ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.mysql.com/apt/${distro_name} ${distro_codename} mysql-8.0 mysql-tools', china: 'https://mirrors.tuna.tsinghua.edu.cn/mysql/apt/${distro_name} ${distro_codename} mysql-8.0 mysql-tools' }}
- { name: docker-ce ,description: 'Docker' ,module: docker ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.docker.com/linux/${distro_name} ${distro_codename} stable' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux//${distro_name} ${distro_codename} stable' }}
- { name: kubernetes ,description: 'Kubernetes' ,module: kube ,releases: [11,12,20,22,24] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /', china: 'https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/deb/ /' }}
Pigsty 构建配置模板 oss.yml
提供了不同操作系统下的默认值。
repo_packages
参数名称: repo_packages
, 类型: string[]
, 层次:G
字符串数组类型,每一行都是 由空格分隔 的软件包列表字符串,指定将要使用 repotrack
或 apt download
下载到本地的软件包(及其依赖)。
本参数没有默认值,即默认值为未定义状态。如果该参数没有被显式定义,那么 Pigsty 会从 roles/node_id/vars
中定义的 repo_packages_default
变量中加载获取默认值,默认值为:
[ node-bootstrap, infra-package, infra-addons, node-package1, node-package2, pgsql-utility ]
该参数中的每个元素,都会在上述文件中定义的 package_map
中,根据特定的操作系统发行版大版本进行翻译。例如在 EL 系统上会翻译为:
node-bootstrap: "ansible python3 python3-pip python3-virtualenv python3-requests python3-jmespath python3-cryptography dnf-utils modulemd-tools createrepo_c sshpass"
infra-package: "nginx dnsmasq etcd haproxy vip-manager pg_exporter pgbackrest_exporter redis_exporter redis minio mcli ferretdb duckdb"
infra-addons: "grafana loki logcli promtail prometheus2 alertmanager pushgateway node_exporter blackbox_exporter nginx_exporter keepalived_exporter"
node-package1: "lz4 unzip bzip2 zlib yum pv jq git ncdu make patch bash lsof wget uuid tuned nvme-cli numactl grubby sysstat iotop htop rsync tcpdump perf flamegraph chkconfig"
node-package2: "netcat socat ftp lrzsz net-tools ipvsadm bind-utils telnet audit ca-certificates readline vim-minimal keepalived chrony openssl openssh-server openssh-clients"
pgsql-utility: "patroni patroni-etcd pgbouncer pgbackrest pgbadger pg_activity pg_timetable pgFormatter pg_filedump pgxnclient timescaledb-tools pgcopydb pgloader"
而在 Debian 系统上会被翻译为对应的 Debian DEB 包名:
node-bootstrap: "ansible python3 python3-pip python3-venv python3-jmespath dpkg-dev sshpass ftp linux-tools-generic"
infra-package: "nginx dnsmasq etcd haproxy vip-manager pg-exporter pgbackrest-exporter redis-exporter redis minio mcli ferretdb duckdb"
infra-addons: "grafana loki logcli promtail prometheus2 alertmanager pushgateway node-exporter blackbox-exporter nginx-exporter keepalived-exporter"
node-package1: "lz4 unzip bzip2 zlib1g pv jq git ncdu make patch bash lsof wget uuid tuned nvme-cli numactl sysstat iotop htop rsync tcpdump acl chrony"
node-package2: "netcat-openbsd socat lrzsz net-tools ipvsadm dnsutils telnet ca-certificates libreadline-dev vim-tiny keepalived openssl openssh-server openssh-client"
pgsql-utility: "patroni pgbouncer pgbackrest pgbadger pg-activity pg-timetable pgformatter postgresql-filedump pgxnclient timescaledb-tools pgcopydb pgloader"
作为一个使用约定,repo_packages
中通常包括了那些与 PostgreSQL 大版本号无关的软件包(例如 Infra,Node 和 PGDG Common 等部分),而 PostgreSQL 大版本相关的软件包(内核,扩展),通常在 repo_extra_packages
中指定,方便用户切换 PG 大版本。
repo_extra_packages
参数名称: repo_extra_packages
, 类型: string[]
, 层次:G/C/I
用于在不修改 repo_packages
的基础上,指定额外需要下载的软件包(通常是 PG 大版本相关的软件包),默认值为空列表。
如果该参数没有被显式定义,那么 Pigsty 会从 roles/node_id/vars
中定义的 repo_extra_packages_default
变量中加载获取默认值,默认值为:
[ pgsql-main ]
该参数中的每个元素,都会在上述文件中定义的 package_map
中,根据特定的操作系统发行版大版本进行翻译。例如在 EL 系统上会翻译为:
postgresql$v* pg_repack_$v* wal2json_$v* pgvector_$v*
而在 Debian 系统上会被翻译为对应的 Debian DEB 包名:
postgresql-$v postgresql-client-$v postgresql-plpython3-$v postgresql-plperl-$v postgresql-pltcl-$v postgresql-server-dev-$v postgresql-$v-repack postgresql-$v-wal2json postgresql-$v-pgvector
这里的 $v
会被替换为 pg_version
,即当前 PG 大版本号 (默认为 17
)。通常用户可以在这里指定 PostgreSQL 大版本相关的软件包,而不影响 repo_packages
中定义的其他 PG 大版本无关的软件包。
repo_url_packages
参数名称: repo_url_packages
, 类型: object[] | string[]
, 层次:G
直接使用 URL 从互联网上下载的软件包,默认为空数组: []
您可以直接在本参数中使用 URL 字符串作为数组元素,也可以使用 Pigsty v3 新引入的对象结构,显式指定 URL 与文件名称。
请注意,本参数会收到 region
变量的影响,如果您在中国大陆地区,Pigsty 会自动将 URL 替换为国内镜像站点,即将 URL 里的 repo.pigsty.io
替换为 repo.pigsty.cc
。
INFRA_PACKAGE
这些软件包只会在 INFRA 节点上安装,包括普通的 RPM/DEB 软件包,以及 PIP 软件包。
infra_packages
参数名称: infra_packages
, 类型: string[]
, 层次:G
字符串数组类型,每一行都是 由空格分隔 的软件包列表字符串,指定将要在 Infra 节点上安装的软件包列表。
本参数没有默认值,即默认值为未定义状态。如果用户不在配置文件中显式指定本参数,则 Pigsty 会从根据当前节点的操作系统族,
从定义于 roles/node_id/vars
中的 infra_packages_default
变量中加载获取默认值。
默认值(EL系操作系统):
infra_packages: # packages to be installed on infra nodes
- grafana,loki,logcli,promtail,prometheus2,alertmanager,pushgateway
- node_exporter,blackbox_exporter,nginx_exporter,pg_exporter
- nginx,dnsmasq,ansible,etcd,python3-requests,redis,mcli
默认值(Debian/Ubuntu):
infra_packages: # packages to be installed on infra nodes
- grafana,loki,logcli,promtail,prometheus2,alertmanager,pushgateway
- node-exporter,blackbox-exporter,nginx-exporter,pg-exporter
- nginx,dnsmasq,ansible,etcd,python3-requests,redis,mcli
infra_packages_pip
参数名称: infra_packages_pip
, 类型: string
, 层次:G
Infra 节点上要使用 pip
额外安装的软件包,包名使用逗号分隔,默认值是空字符串,即不安装任何额外的 python 包。
NGINX
Pigsty 会通过 Nginx 代理所有的 Web 服务访问:Home Page、Grafana、Prometheus、AlertManager 等等。
以及其他可选的工具,如 PGWe、Jupyter Lab、Pgadmin、Bytebase 等等,还有一些静态资源和报告,如 pev
、schemaspy
和 pgbadger
。
最重要的是,Nginx 还作为本地软件仓库(Yum/Apt)的 Web 服务器,用于存储和分发 Pigsty 的软件包。
nginx_enabled: true # enable nginx on this infra node?
nginx_exporter_enabled: true # enable nginx_exporter on this infra node?
nginx_sslmode: enable # nginx ssl mode? disable,enable,enforce
nginx_home: /www # nginx content dir, `/www` by default
nginx_port: 80 # nginx listen port, 80 by default
nginx_ssl_port: 443 # nginx ssl listen port, 443 by default
nginx_navbar: # nginx index page navigation links
- { name: CA Cert ,url: '/ca.crt' ,desc: 'pigsty self-signed ca.crt' }
- { name: Package ,url: '/pigsty' ,desc: 'local yum repo packages' }
- { name: PG Logs ,url: '/logs' ,desc: 'postgres raw csv logs' }
- { name: Reports ,url: '/report' ,desc: 'pgbadger summary report' }
- { name: Explain ,url: '/pigsty/pev.html' ,desc: 'postgres explain visualizer' }
nginx_enabled
参数名称: nginx_enabled
, 类型: bool
, 层次:G/I
是否在当前的 Infra 节点上启用 Nginx?默认值为: true
。
nginx_exporter_enabled
参数名称: nginx_exporter_enabled
, 类型: bool
, 层次:G/I
在此基础设施节点上启用 nginx_exporter ?默认值为: true
。
如果禁用此选项,还会一并禁用 /nginx
健康检查 stub,当您安装使用的 Nginx 版本不支持此功能是可以考虑关闭此开关
nginx_sslmode
参数名称: nginx_sslmode
, 类型: enum
, 层次:G
Nginx 的 SSL工作模式?有三种选择:disable
, enable
, enforce
, 默认值为 enable
,即启用 SSL,但不强制使用。
disable
:只监听nginx_port
指定的端口服务 HTTP 请求。enable
:同时会监听nginx_ssl_port
指定的端口服务 HTTPS 请求。enforce
:所有链接都会被渲染为默认使用https://
nginx_home
参数名称: nginx_home
, 类型: path
, 层次:G
Nginx服务器静态文件目录,默认为: /www
Nginx服务器的根目录,包含静态资源和软件仓库文件。最好不要随意修改此参数,修改时需要与 repo_home
参数保持一致。
nginx_port
参数名称: nginx_port
, 类型: port
, 层次:G
Nginx 默认监听的端口(提供HTTP服务),默认为 80
端口,最好不要修改这个参数。
当您的服务器 80 端口被占用时,可以考虑修改此参数,但是需要同时修改 repo_endpoint
,
以及 node_repo_local_urls
所使用的端口并与这里保持一致。
nginx_ssl_port
参数名称: nginx_ssl_port
, 类型: port
, 层次:G
Nginx SSL 默认监听的端口,默认为 443
,最好不要修改这个参数。
nginx_navbar
参数名称: nginx_navbar
, 类型: index[]
, 层次:G
Nginx 首页上的导航栏内容,默认值:
nginx_navbar: # nginx index page navigation links
- { name: CA Cert ,url: '/ca.crt' ,desc: 'pigsty self-signed ca.crt' }
- { name: Package ,url: '/pigsty' ,desc: 'local yum repo packages' }
- { name: PG Logs ,url: '/logs' ,desc: 'postgres raw csv logs' }
- { name: Reports ,url: '/report' ,desc: 'pgbadger summary report' }
- { name: Explain ,url: '/pigsty/pev.html' ,desc: 'postgres explain visualizer' }
每一条记录都会被渲染为一个导航链接,链接到 Pigsty 首页的 App 下拉菜单,所有的 App 都是可选的,默认挂载在 Pigsty 默认服务器下的 http://pigsty/
。
url
参数指定了 App 的 URL PATH,但是如果 URL 中包含 ${grafana}
字符串,它会被自动替换为 infra_portal
中定义的 Grafana 域名。
所以您可以将一些使用 Grafana 的数据应用挂载到 Pigsty 的首页导航栏中。
DNS
Pigsty 默认会在 Infra 节点上启用 DNSMASQ 服务,用于解析一些辅助域名,例如 h.pigsty
a.pigsty
p.pigsty
g.pigsty
等等,以及可选 MinIO 的 sss.pigsty
。
解析记录会记录在 Infra 节点的 /etc/hosts.d/default
文件中。 要使用这个 DNS 服务器,您必须将 nameserver <ip>
添加到 /etc/resolv
中,node_dns_servers
参数可以解决这个问题。
dns_enabled: true # setup dnsmasq on this infra node?
dns_port: 53 # dns server listen port, 53 by default
dns_records: # dynamic dns records resolved by dnsmasq
- "${admin_ip} h.pigsty a.pigsty p.pigsty g.pigsty"
- "${admin_ip} api.pigsty adm.pigsty cli.pigsty ddl.pigsty lab.pigsty git.pigsty sss.pigsty wiki.pigsty"
dns_enabled
参数名称: dns_enabled
, 类型: bool
, 层次:G/I
是否在这个 Infra 节点上启用 DNSMASQ 服务?默认值为: true
。
如果你不想使用默认的 DNS 服务器,(比如你已经有了外部的DNS服务器,或者您的供应商不允许您使用 DNS 服务器)可以将此值设置为 false
来禁用它。
并使用 node_default_etc_hosts
和 node_etc_hosts
静态解析记录代替。
dns_port
参数名称: dns_port
, 类型: port
, 层次:G
DNSMASQ 的默认监听端口,默认是 53
,不建议修改 DNS 服务默认端口。
dns_records
参数名称: dns_records
, 类型: string[]
, 层次:G
由 dnsmasq 负责解析的动态 DNS 记录,一般用于将一些辅助域名解析到本地,例如 h.pigsty
a.pigsty
p.pigsty
g.pigsty
等等。这些记录会被写入到基础设置节点的 /etc/hosts.d/default
文件中。
dns_records: # dynamic dns records resolved by dnsmasq
- "${admin_ip} h.pigsty a.pigsty p.pigsty g.pigsty"
- "${admin_ip} api.pigsty adm.pigsty cli.pigsty ddl.pigsty lab.pigsty git.pigsty sss.pigsty wiki.pigsty"
PROMETHEUS
Prometheus 被用作时序数据库,用于存储和分析监控指标数据,进行指标预计算,评估告警规则。
prometheus_enabled: true # enable prometheus on this infra node?
prometheus_clean: true # clean prometheus data during init?
prometheus_data: /etc/prometheus/targets # prometheus data dir, `/etc/prometheus/targets` by default
prometheus_sd_interval: 5s # prometheus target refresh interval, 5s by default
prometheus_scrape_interval: 10s # prometheus scrape & eval interval, 10s by default
prometheus_scrape_timeout: 8s # prometheus global scrape timeout, 8s by default
prometheus_options: '--storage.tsdb.retention.time=15d' # prometheus extra server options
pushgateway_enabled: true # setup pushgateway on this infra node?
pushgateway_options: '--persistence.interval=1m' # pushgateway extra server options
blackbox_enabled: true # setup blackbox_exporter on this infra node?
blackbox_options: '' # blackbox_exporter extra server options
alertmanager_enabled: true # setup alertmanager on this infra node?
alertmanager_options: '' # alertmanager extra server options
exporter_metrics_path: /metrics # exporter metric path, `/metrics` by default
exporter_install: none # how to install exporter? none,yum,binary
exporter_repo_url: '' # exporter repo file url if install exporter via yum
prometheus_enabled
参数名称: prometheus_enabled
, 类型: bool
, 层次:G/I
是否在当前 Infra 节点上启用 Prometheus? 默认值为 true
,即所有基础设施节点默认都会安装启用 Prometheus。
例如,如果您有多个元节点,默认情况下,Pigsty会在所有元节点上部署Prometheus。如果您想一台用于Prometheus监控指标收集,一台用于Loki日志收集,则可以在其他元节点的实例层次上将此参数设置为false
。
prometheus_clean
参数名称: prometheus_clean
, 类型: bool
, 层次:G/A
是否在执行 Prometheus 初始化的时候清除现有 Prometheus 数据?默认值为 true
。
prometheus_data
参数名称: prometheus_data
, 类型: path
, 层次:G
Prometheus数据库目录, 默认位置为 /data/prometheus
。
prometheus_sd_dir
参数名称: prometheus_sd_dir
, 类型: path
, 层次:G
Prometheus 静态文件服务发现的对象存储目录,默认值为 /etc/prometheus/targets
。
prometheus_sd_interval
参数名称: prometheus_sd_interval
, 类型: interval
, 层次:G
Prometheus 静态文件服务发现的刷新周期,默认值为 5s
。
这意味着 Prometheus 每隔这样长的时间就会重新扫描一次 prometheus_sd_dir
(默认为:/etc/prometheus/targets
目录),以发现新的监控对象。
prometheus_scrape_interval
参数名称: prometheus_scrape_interval
, 类型: interval
, 层次:G
Prometheus 全局指标抓取周期, 默认值为 10s
。在生产环境,10秒 - 30秒是一个较为合适的抓取周期。如果您需要更精细的的监控数据粒度,则可以调整此参数。
prometheus_scrape_timeout
参数名称: prometheus_scrape_timeout
, 类型: interval
, 层次:G
Prometheus 全局抓取超时,默认为 8s
。
设置抓取超时可以有效避免监控系统查询导致的雪崩,设置原则是,本参数必须小于并接近 prometheus_scrape_interval
,确保每次抓取时长不超过抓取周期。
prometheus_options
参数名称: prometheus_options
, 类型: arg
, 层次:G
Prometheus 的额外的命令行参数,默认值:--storage.tsdb.retention.time=15d
默认的参数会为 Prometheus 配置一个 15 天的保留期限来限制磁盘使用量。
pushgateway_enabled
参数名称: pushgateway_enabled
, 类型: bool
, 层次:G/I
是否在当前 Infra 节点上启用 PushGateway? 默认值为 true
,即所有基础设施节点默认都会安装启用 PushGateway。
pushgateway_options
参数名称: pushgateway_options
, 类型: arg
, 层次:G
PushGateway 的额外的命令行参数,默认值:--persistence.interval=1m
,即每分钟进行一次持久化操作。
blackbox_enabled
参数名称: blackbox_enabled
, 类型: bool
, 层次:G/I
是否在当前 Infra 节点上启用 BlackboxExporter ? 默认值为 true
,即所有基础设施节点默认都会安装启用 BlackboxExporter 。
BlackboxExporter 会向节点 IP 地址, VIP 地址,PostgreSQL VIP 地址发送 ICMP 报文测试网络连通性。
blackbox_options
参数名称: blackbox_options
, 类型: arg
, 层次:G
BlackboxExporter 的额外的命令行参数,默认值:空字符串。
alertmanager_enabled
参数名称: alertmanager_enabled
, 类型: bool
, 层次:G/I
是否在当前 Infra 节点上启用 AlertManager ? 默认值为 true
,即所有基础设施节点默认都会安装启用 AlertManager 。
alertmanager_options
参数名称: alertmanager_options
, 类型: arg
, 层次:G
AlertManager 的额外的命令行参数,默认值:空字符串。
exporter_metrics_path
参数名称: exporter_metrics_path
, 类型: path
, 层次:G
监控 exporter 暴露指标的 HTTP 端点路径,默认为: /metrics
,不建议修改此参数。
exporter_install
参数名称: exporter_install
, 类型: enum
, 层次:G
(弃用参数)安装监控组件的方式,有三种可行选项:none
, yum
, binary
指明安装Exporter的方式:
none
:不安装,(默认行为,Exporter已经在先前由node_pkg
任务完成安装)yum
:使用yum(apt)安装(如果启用yum安装,在部署Exporter前执行yum安装node_exporter
与pg_exporter
)binary
:使用拷贝二进制的方式安装(从元节点中直接拷贝node_exporter
与pg_exporter
二进制,不推荐)
使用yum
安装时,如果指定了exporter_repo_url
(不为空),在执行安装时会首先将该URL下的REPO文件安装至/etc/yum.repos.d
中。这一功能可以在不执行节点基础设施初始化的环境下直接进行Exporter的安装。
不推荐普通用户使用binary
安装,这种模式通常用于紧急故障抢修与临时问题修复。
exporter_repo_url
参数名称: exporter_repo_url
, 类型: url
, 层次:G
(弃用参数)监控组件的 Yum Repo URL
默认为空,当 exporter_install
为 yum
时,该参数指定的Repo会被添加至节点源列表中。
GRAFANA
Pigsty 使用 Grafana 作为监控系统前端。它也可以做为数据分析与可视化平台,或者用于低代码数据应用开发,制作数据应用原型等目的。
grafana_enabled: true # enable grafana on this infra node?
grafana_clean: true # clean grafana data during init?
grafana_admin_username: admin # grafana admin username, `admin` by default
grafana_admin_password: pigsty # grafana admin password, `pigsty` by default
loki_enabled: true # enable loki on this infra node?
loki_clean: false # whether remove existing loki data?
loki_data: /data/loki # loki data dir, `/data/loki` by default
loki_retention: 15d # loki log retention period, 15d by default
grafana_enabled
参数名称: grafana_enabled
, 类型: bool
, 层次:G/I
是否在Infra节点上启用Grafana?默认值为: true
,即所有基础设施节点默认都会安装启用 Grafana。
grafana_clean
参数名称: grafana_clean
, 类型: bool
, 层次:G/A
是否在初始化 Grafana 时一并清理其数据文件?默认为:true
。
该操作会移除 /var/lib/grafana/grafana.db
,确保 Grafana 全新安装。
grafana_admin_username
参数名称: grafana_admin_username
, 类型: username
, 层次:G
Grafana管理员用户名,admin
by default
grafana_admin_password
参数名称: grafana_admin_password
, 类型: password
, 层次:G
Grafana管理员密码,pigsty
by default
提示:请务必在生产部署中修改此密码参数!
LOKI
Loki 是Grafana提供的轻量级日志收集/检索平台,它可以提供一个集中查询服务器/数据库日志的地方。
loki_enabled
参数名称: loki_enabled
, 类型: bool
, 层次:G/I
是否在当前 Infra 节点上启用 Loki ? 默认值为 true
,即所有基础设施节点默认都会安装启用 Loki 。
loki_clean
参数名称: loki_clean
, 类型: bool
, 层次:G/A
是否在安装Loki时清理数据库目录?默认值: false
,现有日志数据在初始化时会保留。
loki_data
参数名称: loki_data
, 类型: path
, 层次:G
Loki的数据目录,默认值为: /data/loki
loki_retention
参数名称: loki_retention
, 类型: interval
, 层次:G
Loki日志默认保留天数,默认保留 15d
。