pig v1.8.0

原生 pig sty boot 与 pig sty conf 工作流,以及 575 个已打包 PostgreSQL 扩展。

Pig v1.8.0 将 Pigsty 控制节点的准备过程原生化。两条核心安装命令 pig sty bootpig sty conf 现在是具备完整失败处理能力的 Go 工作流, 不再包装旧版 bootstrapconfigure Shell 脚本。本版本继续以 575 个已打包 PostgreSQL 扩展 作为统一发布口径,内置 Pigsty 4.5.0

原生 pig sty boot

pig sty boot 现在是一套具备事务语义与完整失败处理的原生控制节点引导流程。它不再执行 <PIGSTY_HOME>/bootstrap,HTTP 下载与归档解压也不依赖 curlwgettargzip

权限与就绪检查

  • 普通用户可以直接发起命令。Pig 会在一次 sudo 自重启前解析并下载显式来源; PIG_NO_SUDO=1 可禁用提权,PIG_NON_INTERACTIVE=1 可要求非交互 sudo。
  • Debian 12/13 会在安装控制节点软件包前检查 locale,并在新软件包可能补齐工具后按需重试。
  • 就绪判定会实际执行 ansible-playbook,发现其 Python 解释器,并检查 yamljmespath, 以及 cryptographyOpenSSL 两者之一;只有二进制文件但无法运行的 Ansible 不再产生假成功。

仓库来源与事务

  • 来源覆盖本地归档、HTTP(S) URL、经过权限检查的自动 /tmp/pkg.tgz、已经提交的 /www/pigsty 仓库,以及区域在线仓库。显式来源无效时直接失败,不会悄悄转为在线引导。
  • 已完成的 /www/pigsty 优先于选中的离线包。Pig 可以自行建立预期的 /www -> /data/nginx 布局,以受限解压提交离线内容,并在离线模式下只启用严格的 pigsty-local 仓库;在线模式会安装内嵌的 Pigsty 密钥,并保持仓库签名校验开启。
  • 默认覆盖策略会备份仓库定义,仓库或软件包准备失败时自动恢复;--keep 使用增量策略, 在线刷新失败时可以利用现有定义重试。
  • 结果会明确标记 readyofflineonlineexisting 模式。即使 Ansible 已经可用, 显式、自动发现或已提交的离线来源仍会被准备。

收尾检查与自动化

  • Pig 会探测控制节点辅助工具,为发起调用的管理员用户修复到 127.0.0.1 的密钥 SSH, 并尽可能从在线或本地内容初始化缺失的 ~/pigsty
  • locale、辅助工具、本机 SSH 与 Pigsty 目录初始化失败属于告警;显式输入无效、仓库或软件包 操作失败、安装路径不受支持,以及安装后 Ansible 仍不可用,仍然是硬错误。
  • JSON/YAML 使用 pig.sty.boot/v2 结果契约,包含模式与软件包管理器、仓库策略与回滚状态、 来源路径、locale、SSH 与初始化状态、变更、告警,以及后续 confinventorydeploy 命令。

原生 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.1010.10.10.19,VIP 等 无关地址保持不变。未指定 --ip 时,交互、非交互与输入关闭场景都有明确且确定的选择行为。
  • --domain 只替换精确的 i.pigsty;CPU 少于四核的控制节点会自动从 oltp 节点与 PostgreSQL 调优配置切换为 tiny
  • 区域变更会更新 all.vars.regionchina 会启用模板中已有的 Docker 与 pip 镜像。 --proxy 将可用的代理环境变量写入 all.vars.proxy_env
  • 通用模板支持 PostgreSQL 14-18 与显式指定的 19 beta,包括匹配的 locale 与 beta 仓库; 固定版本的 mssqlpolarpgNN 模式保留模板实际版本并产生告警。
  • --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
02fd2628810c1b00de730ece32b09dba1318be4c99a4ff1a0551740e32bf223b  pig-1.8.0-1.aarch64.rpm
72ba72a00af52a84b08b1346f85b42668b52bc097e315774ff9f501ca23ece8b  pig-1.8.0-1.x86_64.rpm
f023a5c9049dc532a057e932c73a8197683eaf4d97cb7a8f219492da1ad2a65f  pig-v1.8.0.darwin-amd64.tar.gz
e0ccf61c4d135dbc45359c207751092aeb6df788e826bb73eccc1a1ed8800998  pig-v1.8.0.darwin-arm64.tar.gz
a24a08c1b8d54adcdef5a99ed7b91caeedef1552a1440b1258eb4eb07fb20353  pig-v1.8.0.linux-amd64.tar.gz
9d23875804f87e78039498245059fd6b765831f027aacfc511ad0ac42711fa7b  pig-v1.8.0.linux-arm64.tar.gz
96259ff7584cd52254c91a9fd7d77bd577f23c55cb09f4bc995a3ca0fcbc7321  pig_1.8.0-1_amd64.deb
2e7370211514df6355ef96fb812670febe6ee1b85a28378432c33ebdaecb4b63  pig_1.8.0-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v1.8.0