pig inventory
pig inventory(别名 pig inv)查看、编辑和校验 Pigsty 配置清单 pigsty.yml,检查部署条件,并通过实验性的 cmdb 子命令与 PostgreSQL CMDB 交换配置。
编辑单个片段时,PIG 保留片段外的 YAML 内容与格式。保存前会重新解析完整文件;解析失败或原文件已被其他进程修改时,保留原文件并报告错误。
| 命令 | 别名 | 说明 |
|---|---|---|
inv status |
检视当前生效的清单来源(不执行清单) | |
inv list |
ls |
列出清单拓扑与取值类型(--depth 限制深度) |
inv show |
原样显示清单 YAML(可能包含敏感信息) | |
inv edit |
e |
在 $EDITOR 中编辑清单或选中片段 |
inv validate |
v |
校验一份完整的静态 Pigsty 清单 |
inv check |
ck |
检查清单、控制器与目标节点就绪状态 |
inv diff |
对比两份清单的声明差异(不输出取值) | |
inv cmdb |
与 PostgreSQL CMDB 交换配置(实验性) |
使用全局 -i, --inventory 选择配置清单,或通过 -H, --home 选择 Pigsty 安装目录。未指定时,PIG 从当前配置和 Pigsty 安装目录解析清单来源。除 show 原样输出 YAML 外,其他命令支持 -o json 或 -o yaml 结构化结果。
来源选择
PIG 按以下优先级选择第一个已配置的来源。选中的来源缺失或无效时报告该问题, 不会回退到另一份清单。
| 优先级 | 来源 | 相对路径的基准目录 |
|---|---|---|
| 1 | -i, --inventory PATH |
当前工作目录 |
| 2 | PIGSTY_INVENTORY |
当前工作目录 |
| 3 | ~/.pig/config.yml 中的 inventory |
已解析的 Pigsty 安装目录 |
| 4 | Pigsty 安装目录的 ansible.cfg 中的 [defaults] inventory |
ansible.cfg 所在目录 |
| 5 | pigsty.yml |
已解析的 Pigsty 安装目录 |
PIG 在解析路径前展开 ~/,包括 ansible.cfg 中带引号的路径。pig inv status 只检查选中的来源,不执行动态清单。静态 Inventory 操作要求受支持的 YAML 来源。pig do 可以将目录或可执行清单交给 Ansible;pig sty deploy 要求普通文件。两者都显式向 Ansible 传入解析后的路径,
避免 Ansible 静默选择另一份默认清单。
快速入门
inv status / list / show
status 检查来源,不执行动态清单。list 显示分组、主机、键名与取值类型。show 输出实际取值,包括配置中的密码;加上 -o json 也不会改变其 YAML 输出。
选择器
list / show / edit 接受可选的 选择器 参数,定位清单中的一个片段:
inv edit
在 $EDITOR 中打开选中片段。保存退出后,PIG 恢复缩进和换行风格,重新解析完整文档,检查原文件是否被并发修改,再原子替换原文件。解析失败时会保留临时文件,供你修正。
| 参数 | 说明 |
|---|---|
--from |
从常规文件或 stdin(-)替换选中片段,跳过编辑器 |
保存后的文件归当前用户所有,并移除组和其他用户的访问权限。通常权限变为 0600;原有更严格的仅属主权限会保留。结构化结果中的 mode_tightened 表示权限是否收紧。
inv validate
校验一份完整的静态 Pigsty 清单:YAML 结构、Ansible 约定与 Pigsty 语义(如 admin_ip、infra
分组、主机 IPv4 键等)逐层检查,诊断信息不回显敏感取值。
| 参数 | 说明 |
|---|---|
--strict |
把校验警告当作失败 |
--ansible |
额外使用 ansible-inventory 解析 |
--timeout |
--ansible 兼容性校验超时(默认 10s) |
校验规则面向 Pigsty 配置,包括 admin_ip、infra 分组和主机地址要求。文件必须是单个 YAML 文档,且不能有重复键;这些解析规则同样适用于 show 和 edit。
pg_users[].roles 支持角色名字符串,也支持包含 name 的对象;可选字段为state(grant、revoke、absent),以及允许 null 的布尔字段 admin、set、inherit。编辑、序列化和 CMDB YAML 导出保留看起来像 YAML 1.1 标量的字符串类型,包括 "1:30"、"010"
以及作为字符串传入的日期和时间戳;必要的引号防止下游 YAML 解析器改变类型。已有的未加引号或显式标记为时间戳的值保留原始内容,其标量类型为不透明的 unknown;需要字符串时应加引号。show 和显式 CMDB 导出保留原始数据输出契约。
inv check
在静态校验之上做就绪体检:默认只检查清单与控制器本地条件,可用 --profile 追加探测。
| 参数 | 简写 | 说明 |
|---|---|---|
--profile |
-p |
追加探测:ansible / network / ssh |
--user |
显式 SSH 用户(默认控制器当前用户) | |
--port |
TCP/SSH 目标端口(默认 22) | |
--sudo |
在 ssh 探测中额外验证 sudo -n true |
--user 和 --port 使用显式参数或上表中的默认值,不从 Inventory 推导有效 SSH 变量。可用逗号组合检查,例如 --profile ansible,ssh。
inv diff
比较当前清单与另一份文件,输出声明的增加、删除和修改。结果包含路径与取值类型,不包含配置值:
inv cmdb(实验性)
pig inventory cmdb 通过原生 PostgreSQL 驱动,与 Pigsty 既有的 CMDB 模式
(files/cmdb.sql,pigsty / pglog schema)交换配置清单。连接解析顺序:-d/--database(库名、URI 或 libpq conninfo)→ METADB_URL 环境变量 → service=meta。
| 子命令 | 说明 |
|---|---|
check |
只读:验证 CMDB 投影,并可选校验与静态清单的一致性 |
init |
应用 cmdb.sql 基线(覆盖既有 schema 需确认;--plan 预览) |
load |
用静态清单 替换全部 CMDB 声明行(单事务;需确认;支持 --plan/--strict) |
dump |
将 CMDB 导出为静态清单文件(目标不同时需 --force 覆盖) |
enable |
切换 ansible.cfg 的 inventory 指向 CMDB(inventory.sh) |
disable |
切回静态 pigsty.yml(与 enable 均支持 --plan) |
init 会执行 cmdb.sql,覆盖已有 pigsty / pglog schema;执行前先备份需要保留的数据。load 在单个事务中替换全部声明行。交互模式会要求确认目标;自动化和结构化输出模式使用 --yes 确认。用 --plan 查看操作内容。