Registry
用严格 YAML 描述单机生产环境的期望状态。
内容经过人工双语校对
Registry 是 opsctl 的声明式事实源。SQLite 只用于本地状态与索引;服务、端口、域名、卷、快照和备份策略仍由 YAML 管理。
默认结构
/srv/server-registry/
├── services.yml
├── ports.yml
├── domains.yml
├── volumes.yml
├── snapshots.yml
├── backups.yml
├── policies.yml
├── approvals/
├── plans/
└── history/验证 Registry
opsctl registry validate --json
opsctl doctor --jsonregistry validate 检查 schema 与引用关系;doctor 进一步检查端口冲突、生产快照覆盖、公开数据库端口和其他策略问题。
服务声明
一个服务记录应明确:
- 稳定 ID 与环境。
- 部署类型,例如 systemd、Compose 或静态站点。
- 项目路径与健康检查。
- 端口、域名和卷的所有权。
- 是否要求
before_deploy备份门禁。
从观察结果开始
opsctl scan --json
opsctl registry drift list --json
opsctl registry drift explain <drift-id> --json观察结果不是事实源。你可以把明确归属的资源 adoption 到 registry,或为暂时接受的漂移登记带有效期的 ignore;两者都应保留审计记录。
修改原则
- 先生成或审查 draft。
- 运行严格验证。
- 检查 diff 是否只包含目标资源。
- 对生产 mutation 保留快照和回滚计划。
不要直接把扫描结果整体提升为生产事实。未知归属、共享卷和公开端口需要人工判断。