pig v1.8.0
原生 pig sty boot 与 pig sty conf 工作流,以及 575 个已打包 PostgreSQL 扩展。
原生 pig sty boot 与 pig sty conf 工作流,以及 575 个已打包 PostgreSQL 扩展。
Pig v1.8.0 将 Pigsty 控制节点的准备过程原生化。两条核心安装命令
pig sty boot 与 pig sty conf 现在是具备完整失败处理能力的 Go 工作流,
不再包装旧版 bootstrap 与 configure Shell 脚本。本版本继续以
575 个已打包 PostgreSQL 扩展 作为统一发布口径,内置 Pigsty 4.5.0。
原生 pig sty boot
pig sty boot 现在是一套具备事务语义与完整失败处理的原生控制节点引导流程。它不再执行
<PIGSTY_HOME>/bootstrap,HTTP 下载与归档解压也不依赖 curl、wget、tar 或 gzip。
权限与就绪检查
- 普通用户可以直接发起命令。Pig 会在一次 sudo 自重启前解析并下载显式来源;
PIG_NO_SUDO=1可禁用提权,PIG_NON_INTERACTIVE=1可要求非交互 sudo。 - Debian 12/13 会在安装控制节点软件包前检查 locale,并在新软件包可能补齐工具后按需重试。
- 就绪判定会实际执行
ansible-playbook,发现其 Python 解释器,并检查yaml、jmespath, 以及cryptography或OpenSSL两者之一;只有二进制文件但无法运行的 Ansible 不再产生假成功。
仓库来源与事务
- 来源覆盖本地归档、HTTP(S) URL、经过权限检查的自动
/tmp/pkg.tgz、已经提交的/www/pigsty仓库,以及区域在线仓库。显式来源无效时直接失败,不会悄悄转为在线引导。 - 已完成的
/www/pigsty优先于选中的离线包。Pig 可以自行建立预期的/www -> /data/nginx布局,以受限解压提交离线内容,并在离线模式下只启用严格的pigsty-local仓库;在线模式会安装内嵌的 Pigsty 密钥,并保持仓库签名校验开启。 - 默认覆盖策略会备份仓库定义,仓库或软件包准备失败时自动恢复;
--keep使用增量策略, 在线刷新失败时可以利用现有定义重试。 - 结果会明确标记
ready、offline、online或existing模式。即使 Ansible 已经可用, 显式、自动发现或已提交的离线来源仍会被准备。
收尾检查与自动化
- Pig 会探测控制节点辅助工具,为发起调用的管理员用户修复到
127.0.0.1的密钥 SSH, 并尽可能从在线或本地内容初始化缺失的~/pigsty。 - locale、辅助工具、本机 SSH 与 Pigsty 目录初始化失败属于告警;显式输入无效、仓库或软件包 操作失败、安装路径不受支持,以及安装后 Ansible 仍不可用,仍然是硬错误。
- JSON/YAML 使用
pig.sty.boot/v2结果契约,包含模式与软件包管理器、仓库策略与回滚状态、 来源路径、locale、SSH 与初始化状态、变更、告警,以及后续conf、inventory与deploy命令。
原生 pig sty conf
pig sty conf 现在是一套完整的原生 Inventory 编译流程。它不执行 ./configure,也不会
回退到原始 Shell 行为:Pig 解析一个模板、执行有边界的结构化变更、校验完整候选,最后才提交
输出文件。
安全配置流水线
- 默认模板为
conf/meta.yml;安全的斜杠分隔相对模式既可作为位置参数,也可通过--conf指定。绝对路径、目录穿越、路径逃逸,以及通过直接路径、符号链接、带符号链接父目录或硬链接 造成的源/输出别名都会被拒绝。 - 源模板解析与 IP 冲突检查先于外部预检;解析、变更、预检或校验失败都不会改动目标文件。
- Pig 执行原生 Inventory 校验,并在
ansible-inventory可用时进行一次有时间边界的外部 解析;成功结果以0600权限原子写入。
Inventory 结构化变更
- 最多十个互不相同的
--ip地址会同时映射到10.10.10.10至10.10.10.19,VIP 等 无关地址保持不变。未指定--ip时,交互、非交互与输入关闭场景都有明确且确定的选择行为。 --domain只替换精确的i.pigsty;CPU 少于四核的控制节点会自动从oltp节点与 PostgreSQL 调优配置切换为tiny。- 区域变更会更新
all.vars.region;china会启用模板中已有的 Docker 与 pip 镜像。--proxy将可用的代理环境变量写入all.vars.proxy_env。 - 通用模板支持 PostgreSQL 14-18 与显式指定的 19 beta,包括匹配的 locale 与 beta 仓库;
固定版本的
mssql、polar与pgNN模式保留模板实际版本并产生告警。 --generate为每个已知凭据标识符分配一个 24 位随机值,并一致更新生效值与文档占位符; 结果只列出生成的标识符,绝不输出机密值。
预检与结果契约
- 未指定
--skip时,预检覆盖平台、软件包管理器、控制节点资源、sudo/管理员权限、本机 SSH 与 Ansible 可用性;conf/build/下的构建模板有意绕过 IP 映射与管理员预检。 - JSON/YAML 使用
pig.sty.configure/v1,报告模板与输出、已选择和丢弃的地址、请求与实际 PostgreSQL 版本、已应用选项、生成的机密标识符及告警。
其他更新
- EL8 及以上软件包操作统一优先使用 DNF;本地 RPM 依赖按提供能力解析;新建软件仓库时恢复
预期的
/www布局;自更新可容忍 latest 标记中的空白字符。 - 例行刷新扩展目录、软件包版本、元数据与可用性矩阵,发布的 PostgreSQL 扩展数量保持 575。
- CI 与发布构建使用 Go
1.26.6、固定版本的分析工具与 GoReleaser,并执行依赖校验、 工作流检查、漏洞扫描与完整发布快照构建。
兼容性提醒
pig sty boot不再执行<PIGSTY_HOME>/bootstrap;依赖 Shell 脚本副作用的自动化应改为 使用原生命令及其结构化结果。pig sty conf --raw已移除。请使用原生工作流;--conf MODE仍然可用,等价的位置参数 形式为pig sty conf MODE。pig sty conf --ip可接受最多十个逗号分隔的 IPv4 地址;--skip与--ip仍互斥。 大写-O选择 Inventory 文件,全局小写-o选择命令输出格式。- EL8 及以上使用 DNF;有限的 EL7 兼容目录继续保留独立的传统 YUM 路径。
校验和
制品:GitHub Release · checksums.txt
BASH
发布:https://github.com/pgsty/pig/releases/tag/v1.8.0