Skip to content

Commit 6ceab0c

Browse files
committed
docs: publish pig v1.8.0
1 parent edde08d commit 6ceab0c

7 files changed

Lines changed: 302 additions & 75 deletions

File tree

content/blog/release/pig-1.7.0.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: "Ruohang Feng"
66
description: "Safer EL module handling, refreshed China mirrors, streamlined EL7 compatibility, and 575 packaged extensions."
77
categories: [release]
88
tags: [Release, pig]
9-
weight: 1
9+
weight: 2
1010
---
1111

1212
Pig `v1.7.0` is a repository compatibility and catalog release on top of [v1.6.2](/release/pig-1.6.2/). It makes China-mirror selection explicit, preserves native DNF module filtering by default, restores a streamlined EL7 repository catalog, and grows the bundled extension snapshot from 572 to 575. The embedded Pigsty version remains `4.5.0`.

content/blog/release/pig-1.7.0.zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: "冯若航"
66
description: "更安全的 EL 模块处理、更新的中国镜像、精简的 EL7 兼容目录,以及 575 个已打包扩展。"
77
categories: [release]
88
tags: [Release, pig]
9-
weight: 1
9+
weight: 2
1010
---
1111

1212
Pig `v1.7.0`[v1.6.2](/zh/release/pig-1.6.2/) 之上的仓库兼容性与目录更新版本:明确中国镜像选择语义,默认保留 DNF 原生模块过滤,恢复精简的 EL7 仓库目录,并将内置扩展快照从 572 个增加到 575 个。内置 Pigsty 版本仍为 `4.5.0`

content/blog/release/pig-1.8.0.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: "pig v1.8.0"
3+
linkTitle: "v1.8.0"
4+
date: 2026-08-14
5+
author: "Ruohang Feng"
6+
description: "Native pig sty boot and pig sty conf workflows, with 575 packaged PostgreSQL extensions."
7+
categories: [release]
8+
tags: [Release, pig]
9+
weight: 1
10+
---
11+
12+
Pig `v1.8.0` makes Pigsty controller setup native. The two core setup commands,
13+
`pig sty boot` and `pig sty conf`, are now failure-aware Go workflows instead of
14+
wrappers around the legacy `bootstrap` and `configure` shell scripts. The release
15+
keeps the public catalog total at **575 packaged PostgreSQL extensions** and embeds
16+
Pigsty `4.5.0`.
17+
18+
## Native `pig sty boot`
19+
20+
- Bootstraps the controller end to end: repairs the Debian 12/13 locale when needed,
21+
verifies Ansible and its Python dependencies, installs controller packages, repairs
22+
localhost SSH on a best-effort basis, and can initialize a missing `~/pigsty` tree.
23+
- Supports online repositories, an explicit local package or HTTP(S) URL, a trusted
24+
automatically discovered offline package, and an already prepared `/www/pigsty`
25+
repository.
26+
- Backs up replaced repository definitions and restores them when package setup fails.
27+
Explicit offline-input errors are hard failures, while optional final conveniences
28+
are reported as warnings. JSON and YAML output expose the selected mode, repository
29+
policy, rollback state, warnings, and recommended next commands.
30+
31+
## Native `pig sty conf`
32+
33+
- Generates Inventory from a safe template below `<PIGSTY_HOME>/conf`, supports both
34+
`pig sty conf MODE` and `--conf MODE`, and can map up to ten ordered IPv4 addresses
35+
plus the exact `i.pigsty` placeholder domain.
36+
- Adds deterministic interactive and non-interactive IP selection, structural proxy,
37+
region, PostgreSQL-version, and secret-generation mutations, followed by complete
38+
Inventory validation.
39+
- Refuses source/output aliasing through direct paths, symlinks, symlinked parents, or
40+
hard links. A validated result is written atomically with mode `0600`; structured
41+
output reports generated secret identifiers but never their values.
42+
43+
## Other Updates
44+
45+
- EL8 and newer package operations consistently prefer DNF, local RPM requirements are
46+
resolved by provider capability, fresh repository bootstraps restore the expected
47+
`/www -> /data/nginx` layout, and self-update tolerates whitespace in the latest marker.
48+
- The extension catalog, package versions, metadata, and availability matrices receive
49+
their routine refresh while the published PostgreSQL-extension count remains **575**.
50+
- CI and release builds use Go `1.26.6`, pinned analysis tools and GoReleaser, dependency
51+
verification, workflow linting, vulnerability scanning, and a full release snapshot.
52+
53+
## Compatibility Notes
54+
55+
- `pig sty boot` no longer executes `<PIGSTY_HOME>/bootstrap`. Automation that relied on
56+
shell-script side effects should consume the native command result instead.
57+
- `pig sty conf --raw` has been removed. Use the native workflow; `--conf MODE` remains
58+
available, with `pig sty conf MODE` as the equivalent positional form.
59+
- `pig sty conf --ip` accepts up to ten comma-separated IPv4 addresses; `--skip` and
60+
`--ip` remain mutually exclusive.
61+
- EL8 and newer use DNF. The limited EL7 compatibility catalog retains its separate
62+
legacy YUM path.
63+
64+
## Checksums
65+
66+
Artifacts: [GitHub Release](https://github.com/pgsty/pig/releases/tag/v1.8.0) · [checksums.txt](https://github.com/pgsty/pig/releases/download/v1.8.0/checksums.txt)
67+
68+
```bash
69+
02fd2628810c1b00de730ece32b09dba1318be4c99a4ff1a0551740e32bf223b pig-1.8.0-1.aarch64.rpm
70+
72ba72a00af52a84b08b1346f85b42668b52bc097e315774ff9f501ca23ece8b pig-1.8.0-1.x86_64.rpm
71+
f023a5c9049dc532a057e932c73a8197683eaf4d97cb7a8f219492da1ad2a65f pig-v1.8.0.darwin-amd64.tar.gz
72+
e0ccf61c4d135dbc45359c207751092aeb6df788e826bb73eccc1a1ed8800998 pig-v1.8.0.darwin-arm64.tar.gz
73+
a24a08c1b8d54adcdef5a99ed7b91caeedef1552a1440b1258eb4eb07fb20353 pig-v1.8.0.linux-amd64.tar.gz
74+
9d23875804f87e78039498245059fd6b765831f027aacfc511ad0ac42711fa7b pig-v1.8.0.linux-arm64.tar.gz
75+
96259ff7584cd52254c91a9fd7d77bd577f23c55cb09f4bc995a3ca0fcbc7321 pig_1.8.0-1_amd64.deb
76+
2e7370211514df6355ef96fb812670febe6ee1b85a28378432c33ebdaecb4b63 pig_1.8.0-1_arm64.deb
77+
```
78+
79+
Release: https://github.com/pgsty/pig/releases/tag/v1.8.0
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
title: "pig v1.8.0"
3+
linkTitle: "v1.8.0"
4+
date: 2026-08-14
5+
author: "冯若航"
6+
description: "原生 pig sty boot 与 pig sty conf 工作流,以及 575 个已打包 PostgreSQL 扩展。"
7+
categories: [release]
8+
tags: [Release, pig]
9+
weight: 1
10+
---
11+
12+
Pig `v1.8.0` 将 Pigsty 控制节点的准备过程原生化。两条核心安装命令
13+
`pig sty boot``pig sty conf` 现在是具备完整失败处理能力的 Go 工作流,
14+
不再包装旧版 `bootstrap``configure` Shell 脚本。本版本继续以
15+
**575 个已打包 PostgreSQL 扩展**作为统一发布口径,内置 Pigsty `4.5.0`
16+
17+
## 原生 `pig sty boot`
18+
19+
- 端到端引导控制节点:按需修复 Debian 12/13 locale,校验 Ansible 及其 Python
20+
依赖,安装控制节点软件包,尽力修复本机免密 SSH,并可初始化缺失的 `~/pigsty`
21+
- 支持在线仓库、显式本地软件包或 HTTP(S) URL、可信的自动发现离线包,以及已经
22+
准备好的 `/www/pigsty` 软件仓库。
23+
- 替换仓库定义前自动备份,软件包准备失败时自动恢复。显式离线输入错误会直接失败,
24+
可选的收尾便利步骤则以告警呈现。JSON/YAML 输出会报告工作模式、仓库策略、回滚状态、
25+
告警与后续建议命令。
26+
27+
## 原生 `pig sty conf`
28+
29+
-`<PIGSTY_HOME>/conf` 下的安全模板生成 Inventory,同时支持
30+
`pig sty conf MODE``--conf MODE`,可按顺序映射最多十个 IPv4 地址,并替换
31+
精确的 `i.pigsty` 占位域名。
32+
- 提供确定性的交互与非交互 IP 选择,结构化处理代理、区域、PostgreSQL 版本与随机
33+
口令变更,最后对完整 Inventory 执行校验。
34+
- 拒绝通过直接路径、符号链接、带符号链接的父目录或硬链接让输出指回源模板。
35+
校验通过后以 `0600` 权限原子写入;结构化输出只报告生成的机密标识符,不泄露其值。
36+
37+
## 其他更新
38+
39+
- EL8 及以上软件包操作统一优先使用 DNF;本地 RPM 依赖按提供能力解析;新建软件仓库时
40+
恢复预期的 `/www -> /data/nginx` 布局;自更新可容忍 latest 标记中的空白字符。
41+
- 例行刷新扩展目录、软件包版本、元数据与可用性矩阵,发布的 PostgreSQL 扩展数量保持
42+
**575**
43+
- CI 与发布构建使用 Go `1.26.6`、固定版本的分析工具与 GoReleaser,并执行依赖校验、
44+
工作流检查、漏洞扫描与完整发布快照构建。
45+
46+
## 兼容性提醒
47+
48+
- `pig sty boot` 不再执行 `<PIGSTY_HOME>/bootstrap`;依赖 Shell 脚本副作用的自动化应改为
49+
使用原生命令结果。
50+
- `pig sty conf --raw` 已移除。请直接使用原生工作流;`--conf MODE` 仍然可用,等价的位置
51+
参数形式为 `pig sty conf MODE`
52+
- `pig sty conf --ip` 可接受最多十个逗号分隔的 IPv4 地址;`--skip``--ip` 仍互斥。
53+
- EL8 及以上使用 DNF;有限的 EL7 兼容目录继续保留独立的传统 YUM 路径。
54+
55+
## 校验和
56+
57+
制品:[GitHub Release](https://github.com/pgsty/pig/releases/tag/v1.8.0) · [checksums.txt](https://github.com/pgsty/pig/releases/download/v1.8.0/checksums.txt)
58+
59+
```bash
60+
02fd2628810c1b00de730ece32b09dba1318be4c99a4ff1a0551740e32bf223b pig-1.8.0-1.aarch64.rpm
61+
72ba72a00af52a84b08b1346f85b42668b52bc097e315774ff9f501ca23ece8b pig-1.8.0-1.x86_64.rpm
62+
f023a5c9049dc532a057e932c73a8197683eaf4d97cb7a8f219492da1ad2a65f pig-v1.8.0.darwin-amd64.tar.gz
63+
e0ccf61c4d135dbc45359c207751092aeb6df788e826bb73eccc1a1ed8800998 pig-v1.8.0.darwin-arm64.tar.gz
64+
a24a08c1b8d54adcdef5a99ed7b91caeedef1552a1440b1258eb4eb07fb20353 pig-v1.8.0.linux-amd64.tar.gz
65+
9d23875804f87e78039498245059fd6b765831f027aacfc511ad0ac42711fa7b pig-v1.8.0.linux-arm64.tar.gz
66+
96259ff7584cd52254c91a9fd7d77bd577f23c55cb09f4bc995a3ca0fcbc7321 pig_1.8.0-1_amd64.deb
67+
2e7370211514df6355ef96fb812670febe6ee1b85a28378432c33ebdaecb4b63 pig_1.8.0-1_arm64.deb
68+
```
69+
70+
发布:https://github.com/pgsty/pig/releases/tag/v1.8.0

content/sty.md

Lines changed: 79 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ It brings HA, PITR, monitoring, infrastructure as code (IaC), and rich extension
1313
pig sty - Init (Download), Bootstrap, Configure, and Deploy Pigsty
1414

1515
pig sty init [-mpfvd] # install pigsty (~/pigsty by default)
16-
pig sty boot [-rmpk] # install ansible and prepare offline pkg
17-
pig sty conf [-cvmrsoxnpg --raw] # configure pigsty and generate config
16+
pig sty boot [-rmpk] # native controller bootstrap
17+
pig sty conf [mode] [flags] # native Inventory-aware configuration
1818
pig sty deploy # use pigsty to deploy everything (CAUTION!)
1919
pig sty get # download pigsty source tarball
2020
pig sty list # list available pigsty versions
@@ -30,15 +30,17 @@ Examples:
3030
| Command | Description | Notes |
3131
|:---|:---|:---|
3232
| `sty init` | Install Pigsty | |
33-
| `sty boot` | Install Ansible prerequisites | Requires sudo or root |
34-
| `sty conf` | Generate configuration | |
33+
| `sty boot` | Bootstrap the Pigsty controller | Requires root |
34+
| `sty conf` | Generate and validate Inventory | Native Go workflow |
3535
| `sty deploy` | Run deployment playbook | |
3636
| `sty list` | List available Pigsty versions | |
3737
| `sty get` | Download Pigsty source tarball | |
3838
| `sty grafana` | Manage Grafana dashboards (alias `gf`) | New in v1.6.0 |
3939
{.full-width}
4040

41-
> Since v1.6.0, the former `pig sty edit` / `validate` / `check` commands moved to the
41+
> Since v1.8.0, `pig sty boot` and `pig sty conf` are native Go workflows. They no longer
42+
> invoke Pigsty's legacy `bootstrap` or `configure` shell scripts. Since v1.6.0, the former
43+
> `pig sty edit` / `validate` / `check` commands moved to the
4244
> root-level [`pig inventory`](/inventory/) command group, and the experimental
4345
> `pig sty dashboard` was replaced by `pig sty grafana`.
4446
@@ -47,14 +49,17 @@ Examples:
4749
Use `pig sty` to bootstrap and deploy Pigsty on the current node.
4850

4951
```bash
50-
pig sty init # install Pigsty to ~/pigsty
51-
pig sty boot # install Ansible prerequisites
52-
pig sty conf # generate configuration
52+
sudo pig sty boot # prepare the controller and ~/pigsty
53+
pig sty conf -g # generate and validate pigsty.yml
54+
pig inventory edit # optional: review and adjust the Inventory
5355
pig sty deploy # run deployment playbook
5456
```
5557

5658
See the detailed setup guide: <https://pigsty.io/docs/setup/install/>
5759

60+
`sty boot` initializes a missing default `~/pigsty` tree on a best-effort basis. Use
61+
`pig sty init` first when you need to select an explicit Pigsty version or installation path.
62+
5863
## sty init
5964

6065
Download and install the Pigsty distribution into `~/pigsty`.
@@ -78,58 +83,96 @@ pig sty init 3 # fetch and install latest v3 major version
7883

7984
## sty boot
8085

81-
Install Ansible and its dependencies.
86+
Bootstrap the Pigsty controller with the native Go workflow. The command requires root,
87+
prepares a usable Ansible environment, supports online and offline repositories, repairs
88+
common controller prerequisites, and reports a structured result. It never delegates to
89+
Pigsty's legacy `bootstrap` script.
8290

8391
```bash
84-
pig sty boot # install Ansible
85-
pig sty boot -r china # use China region mirror
86-
pig sty boot -m # equivalent to --region china
87-
pig sty boot -k # keep existing repositories
88-
pig sty boot -p /path/to/pkg # selected offline package path
92+
sudo pig sty boot # online bootstrap with the default region
93+
sudo pig sty boot -r china # use China-region repositories
94+
sudo pig sty boot -m # equivalent to --region china
95+
sudo pig sty boot -k # preserve existing repository definitions
96+
sudo pig sty boot -p /path/to/pkg.tgz # use an explicit offline package
97+
sudo pig sty boot -p https://host/pkg.tgz # download and use an offline package
98+
sudo pig sty boot -o json # machine-readable result and warnings
8999
```
90100

101+
The native bootstrap performs these stages:
102+
103+
1. On Debian 12/13, check and repair `en_US.UTF-8` when possible so Ansible can start.
104+
2. Verify `ansible-playbook` and its Python dependencies instead of checking only the binary.
105+
3. Reuse a committed `/www/pigsty` repository, consume an explicit package or URL, accept a
106+
trusted automatic `/tmp/pkg.tgz`, or configure the selected online repositories.
107+
4. Install the controller package set when Ansible is missing or unusable. Explicit offline
108+
input is still prepared when Ansible is already installed.
109+
5. Unless `--keep` is set, back up repository definitions before replacement and restore them
110+
automatically when local or online package setup fails.
111+
6. Best-effort repair key-based localhost SSH and initialize a missing default `~/pigsty` tree.
112+
These final convenience checks produce warnings rather than turning a usable controller into
113+
a false bootstrap failure.
114+
91115
**Options:**
92116

93117
- `-r|--region`: region, such as default, china, europe
94118
- `-m|--mirror`: equivalent to `--region china`
95-
- `-p|--path`: offline package path
96-
- `-k|--keep`: keep existing repositories
119+
- `-p|--path`: offline package file or HTTP(S) URL; an invalid explicit source is a hard error
120+
- `-k|--keep`: preserve existing repositories instead of replacing them
121+
122+
An automatically discovered `/tmp/pkg.tgz` must be a regular, non-group/world-writable file
123+
owned by root or the invoking sudo user. Unsafe automatic candidates are ignored with a warning.
124+
Use `-o json` or `-o yaml` to consume bootstrap mode, repository policy, rollback state, locale,
125+
SSH, Pigsty initialization status, warnings, and recommended next commands without scraping text.
97126

98127
See: <https://pigsty.io/docs/setup/offline/#bootstrap>
99128

100129
## sty conf
101130

102-
Configure Pigsty with `./configure` and generate the configuration file.
131+
Generate Pigsty Inventory through the native Go workflow. `sty conf` reads one template below
132+
`<PIGSTY_HOME>/conf`, applies bounded structural mutations, validates the complete candidate,
133+
and atomically writes an owner-only Inventory. It does not invoke or fall back to `./configure`.
103134

104135
```bash
105-
pig sty conf # use default meta.yml config
106-
pig sty conf -g # generate random passwords (recommended!)
107-
pig sty conf -c rich # use conf/rich.yml template with more extensions
108-
pig sty conf -c ha/full # use conf/ha/full.yml 4-node HA template
109-
pig sty conf -c slim # use conf/slim.yml minimal template
110-
pig sty conf -c supabase # use conf/supabase.yml self-hosting template
111-
pig sty conf -v 18 -c rich # use conf/rich.yml template with PostgreSQL 18
112-
pig sty conf -r china -s # use China mirror and skip IP probing
113-
pig sty conf -m -s # use mirror mode and skip IP probing
114-
pig sty conf -x # write proxy settings from environment variables
115-
pig sty conf -c full -g -O ha.yml # full HA template, random passwords, output to ha.yml
116-
pig sty conf --raw # use legacy shell configure workflow
136+
pig sty conf # use conf/meta.yml and write pigsty.yml
137+
pig sty conf -g # generate random passwords (recommended)
138+
pig sty conf rich # positional mode selects conf/rich.yml
139+
pig sty conf -c ha/full # equivalent flag form; do not combine both forms
140+
pig sty conf ha/trio --ip 10.0.0.10,10.0.0.11,10.0.0.12
141+
pig sty conf --domain infra.example.com
142+
pig sty conf rich -v 18 # request PostgreSQL 18 for a generic template
143+
pig sty conf -r china -s # China region, placeholder IP, no admin preflight
144+
pig sty conf -x # materialize proxy environment variables
145+
pig sty conf full -g -O ha.yml # custom owner-only output file
146+
pig sty conf -n --ip 10.0.0.10 -o json
117147
```
118148

119149
**Options:**
120150

121-
- `-c|--conf`: configuration template name, such as meta/rich/slim/full/supabase
122-
- `--ip`: primary node IP address
151+
- `-c|--conf`: template mode, equivalent to positional `[mode]`; the two forms are exclusive
152+
- `--ip`: up to ten distinct comma-separated IPv4 addresses
153+
- `--domain`: replace the exact `i.pigsty` placeholder domain
123154
- `-v|--version`: PostgreSQL major version, 18/17/16/15/14; 19 beta can be specified explicitly
124155
- `-r|--region`: upstream repository region, such as default/china/europe
125156
- `-m|--mirror`: equivalent to `--region china`
126157
- `-O|--output-file`: output config file path, default `pigsty.yml`
127-
- `-s|--skip`: use a placeholder IP and skip the admin SSH/sudo preflight
158+
- `-s|--skip`: keep the placeholder IP and skip admin SSH/sudo preflight; exclusive with `--ip`
128159
- `-p|--port`: SSH port
129-
- `-x|--proxy`: write proxy settings from environment variables
130-
- `-n|--non-interactive`: non-interactive mode
131-
- `-g|--generate`: generate random default passwords, recommended
132-
- `--raw`: use the legacy shell configure workflow (generated passwords remain visible)
160+
- `-x|--proxy`: write non-empty proxy environment variables into `all.vars.proxy_env`
161+
- `-n|--non-interactive`: refuse ambiguous IP selection instead of prompting
162+
- `-g|--generate`: replace known demo credentials with random 24-character values
163+
164+
`--ip` maps addresses in order to the template slots `10.10.10.10` through
165+
`10.10.10.19`; replacement is simultaneous, and unrelated addresses such as VIPs remain intact.
166+
Without `--ip`, interactive mode lists detected interfaces for selection; non-interactive or
167+
closed-input execution fails with guidance to specify an address. `--domain` only replaces the
168+
exact `i.pigsty` token, not names such as `cli.pigsty` or `i.pigsty.cc`.
169+
170+
Template modes are safe relative paths below `conf`; absolute paths, traversal, and path escape
171+
are rejected. Output cannot alias the source template through a direct path, symlink, symlinked
172+
parent, or hard link. The rendered Inventory is validated before the atomic `0600` write, so a
173+
parse, mutation, preflight, or validation failure does not replace the destination. Structured
174+
output reports applied IP mappings, effective PostgreSQL version, generated secret identifiers,
175+
and warnings, but never generated secret values.
133176

134177
See: <https://pigsty.io/docs/setup/install/#configure>
135178

0 commit comments

Comments
 (0)