Skip to content

About

No description, website, or topics provided.

Resources

Stars

26 stars

Watchers

1 watching

Forks

Repository files navigation

Galaxy-OPS

CI Coverage Status License: MIT Version Rust 2024 edition GitHub stars

galaxy-ops 开源运维交付工具,用于组织、配置、组合和交付运维能力,并将项目实施过程沉淀为可复用、可演进的交付资产。

在整体产品分工中:

  • galaxy-ops 负责模块、系统和运维项目的组织与交付
  • galaxy-flow 提供基于 GXL 的工作流定义与执行能力

安装说明 / Installation

一键安装(推荐)

稳定版

curl -sSf https://get.warpparse.ai/inst-x.sh | bash -s -- gops

测试版(beta 通道)

curl -sSf https://get.warpparse.ai/inst-x.sh | bash -s -- gops beta

开发版(alpha 通道)

curl -sSf https://get.warpparse.ai/inst-x.sh | bash -s -- gops alpha

默认安装到:$HOME/bin。如需自定义安装目录:

curl -sSf https://get.warpparse.ai/inst-x.sh | WP_INST_INSTALL_DIR=/usr/local/bin bash -s -- gops

安装后验证:

# 需要 PATH 里有 $HOME/bin(galaxy-ops 调用 galaxy-flow 的 gx 来完成系统操作)
gops --version
gx --version

如果提示命令不存在,请把安装目录加入 PATH(例如 $HOME/bin)。

自升级

安装后可用 gops self update 直接升级到最新版本,无需重新执行安装脚本:

gops self status                          # 当前版本与安装目录
gops self check -c alpha                  # 查询通道最新版本(-c 是 --channel 短写;--json 机器可读)
gops self update -c alpha --yes           # 升级到最新版
gops self rollback                        # 回滚到上一版本

安装 agent skills

gops 可直接把 gops-skills 装进 agent 的 skills 目录(无需 install.sh / python3 / ruby):

gops self skill install                          # 整包(顶层路由 + skills/),自动探测已装平台
gops self skill list                             # 列出可安装的 skills
  • 默认源 galaxio-labs/gops-skills@main;--source 接受 owner/repo、git URL 或本地目录,--ref 指定分支 / 标签。
  • --target codex|claude|zed|all(可重复)与 --dir <path>(可重复)选择落地目录;都不给时自动探测 ~/.codex/skills、~/.claude/skills、~/.agents/skills。
  • 装前校验每个 SKILL.md 的 YAML frontmatter,非法即中止;本地来源可用 --symlink。

从源码构建

见下方 Quick Start。

Why Galaxy-OPS

很多自动化工具解决的是“命令怎么执行”,galaxy-ops 更关注“运维能力如何被组织、组合、配置、本地化和交付”。

它不是泛化的 CI/CD 平台,也不是单纯的部署脚手架,而是把模块、系统和项目这些交付对象沉淀为可复用资产的工具层。

Core Objects

galaxy-ops 围绕三类核心对象工作:

  • Module:最小可复用运维单元,包含规范、依赖、变量、模板和工作流。
  • System:由多个模块组合形成的交付单元,用于表达完整系统的结构与操作方式。
  • Ops Project:面向具体客户环境或部署现场的运维项目,用于导入系统、管理本地值和持续更新。

对应关系可以简化为:

Module -> System -> Ops Project

What It Does

当前仓库中的 gops CLI 主要提供五组能力:

  • gops mod:创建模块、生成示例、更新引用、本地化模块配置、查看值变更。
  • gops sys:系统定义与交付——创建系统、解析定义、本地化、打包、值变更。
  • gops run:运行时运维——在目标环境下载/安装/卸载组件、启动/停止服务、查询状态、诊断。
  • gops prj:创建运维工程、导入系统、更新本地项目引用。
  • gops self:检查与升级 gops 自身(自升级),并安装 / 列出 agent skills(gops self skill)。

这意味着 galaxy-ops 负责交付组织层,而不是直接替代工作流执行引擎:

  • galaxy-ops 管理模块、系统、项目与交付结构
  • galaxy-flow 管理 GXL 工作流的定义与执行

CLI Overview

主命令:

gops <COMMAND>

一级命令:

  • gops mod
  • gops sys
  • gops run
  • gops prj
  • gops self

常用子命令:

gops mod — 模块

gops mod new --name nginx        # 创建模块
gops mod localize                # 本地化模块配置
gops mod diff                    # 查看值变更(哪些值被覆盖、被哪一层覆盖)

gops sys — 系统(定义 / 交付)

gops sys new --name web-stack    # 创建系统
gops sys resolve                 # 解析系统定义(取模块 / 解析变量 → merged_vars.yml)
gops sys diff                    # 查看值变更(初始值 / 生效值 / 来源 / 可变性;--json 机器可读)
gops sys perms                   # 宿主 bind 挂载权限自检(--apply 幂等修复,--json 机器可读)
gops sys package                 # 打包为 .tar.gz(在系统目录内执行)

gops sys perms 只对 kind: docker-compose 系统生效:它读 docker compose config --format json (不需要拉镜像),按每个服务的 user:、bind source、read_only 派生宿主属主/权限, 默认只 stat 并列出待修项;--apply 才改磁盘。写挂载对齐为文件 660 / 目录 2770, 只读挂载只补属组读位(640 / 2750),容器自建的文件(属主 = 容器 uid)不动。 只在 Linux 上生效;详见 docs/design/sys-perms.md。

gops run — 运行时运维

gops run download                # 下载组件
gops run install                 # 安装组件
gops run start                   # 启动服务
gops run stop                    # 停止服务
gops run status                  # 查询状态
gops run diagnose                # 诊断

gops prj — 运维工程

gops prj new --name customer-a                              # 创建运维工程
gops prj import --path /path/to/web-stack-0.1.0.tar.gz      # 导入已打包的系统
gops prj sync                                               # 同步内容到 addr 指向的版本;缺失系统按包导入(非破坏)
gops prj upgrade latest -c alpha --on-failure rollback-all  # 一次可回滚的发布升级(按通道取最新)
gops prj upgrade web-stack patch --on-failure halt          # 只升 web-stack 到下一个 patch
gops prj upgrade web-stack 0.10.0-alpha --on-failure rollback-all  # 精确版本
gops prj upgrade --to /path/to/pkg.tar.gz --on-failure halt # 完整地址逃生口

prj import 会自动把 pkg-1.0.0.tar.gz 里的版本改写成 {version} 模板并写入 version: 1.0.0, 后续可直接用 prj upgrade latest|patch|minor|major。目标版本与现场版本一致时默认 no-op (不备份、不覆盖、不切换),--force 可强制重跑。--on-failure 默认 rollback-all, 需要停在现场排查时显式传 --on-failure halt。

普通 HTTP 源(COS / S3 / OSS / nginx 等):

  • patch / minor / major 会按版本规则生成候选 URL 并做 HEAD 探测(有界:patch 向前 20 个,minor 最多 5 个、每个最多 5 个 patch,major 最多 3 个、每个 major 最多 2 个 minor); 候选按版本升序每 8 个一批并发探测,命中即取该批最小版本, 正常情况下只发 1 批请求(约 0.5s);
  • latest 没有天然停止条件,仍需要版本清单:在 addr 版本段的父目录放一份 versions.json / versions.txt:
https://.../wist-center-stack/versions.json   # 或 versions.txt
{ "versions": ["0.1.9-alpha", "0.1.10-alpha"] }

versions.txt 为每行一个版本,支持 # 注释。没有清单且无法探测时,仍可用精确版本或 --to。

「内容 / 版本」类命令的分工(避免 sync 与 upgrade 混淆):

诉求 命令
给已交付系统换版本 / 补齐被删的系统,只覆盖包内内容、不动现场态、可安全重入 gops prj sync(旧名 update 仍可用)
要一次可回滚的发布升级:含备份、重渲值、拉镜像、切换、探活(仅 docker-compose) gops prj upgrade

sync 与 upgrade 的边界:sync 是非事务的内容同步(无备份、无健康检查、无回滚,也不同步运行时);upgrade 是事务(有备份与回滚,含运行时切换与探活)。

gops self — 自身维护

gops self check --channel alpha           # 检查通道最新版本
gops self update --channel alpha --yes    # 升级到最新版
gops self skill install                   # 安装 agent skills
gops self skill list                      # 列出可安装的 skills

查看完整帮助:

gops --help
gops mod --help
gops sys --help
gops run --help
gops prj --help
gops self --help

Quick Start

Build

cargo build --release

调试运行:

cargo run --bin gops -- --help

1. Create a Module

mkdir demo-work && cd demo-work
gops mod new --name nginx

模块目录中通常会包含规范、变量、值文件和工作流等内容,用于表达一个可复用运维单元。

2. Create a System

gops sys new --name web-stack

系统用于组合多个模块,并形成一个更接近交付视角的系统定义。

默认是模块式(GXL)系统;也支持纯 docker-compose 系统:gops sys new --name web-stack --kind docker-compose。此时 gops run start/stop/status/... 自动映射到 docker compose,密钥用 ${SEC_xxx} 占位、运行时从 ~/.galaxy/sec_value.yml 注入(详见 example/README.md 与 src/system/README.md)。

3. Package the System

cd web-stack
gops sys package

sys package 会先执行一次 update(解析模块变量、生成 merged_vars.yml),再把系统打包为父目录下的 <name>-<version>.tar.gz,作为可交付产物。

4. Create an Ops Project

cd ..
gops prj new --name customer-a
cd customer-a
gops prj import --path ../web-stack-0.1.0.tar.gz
gops prj sync

运维项目用于把系统导入到具体环境,并在本地持续维护配置和值文件。

Repository Layout

galaxy-ops/
├── app/gops/           # gops CLI
├── src/module/         # 模块模型、引用与本地化
├── src/system/         # 系统模型、系统操作与设置
├── src/ops_prj/        # 运维项目创建、导入与更新
├── src/workflow/       # 与工作流相关的适配层
├── example/            # 示例项目
└── tests/              # 集成测试

Key Design Points

  • 模块化:先定义模块,再组合系统,最后落到具体运维项目。
  • 本地化:通过变量和值文件生成特定环境下可执行的配置结果。
  • 可交付:把项目里的临时脚本和配置沉淀为结构化资产。
  • 与 GXL 协同:工作流执行能力由 galaxy-flow 提供,galaxy-ops 不重复发明执行器。

One System, Many Customers

galaxy-ops 能支持“一个系统,多客户自动化部署”,核心不是复制脚本,而是把“可复用定义”和“客户差异化配置”分层管理。

它的设计可以概括为三层:

  • Module 层:沉淀可复用的模块规范、依赖、模板、变量和工作流。
  • System 层:把多个模块组合成一个可交付系统,并维护系统级变量、模块列表和系统工作流。
  • Ops Project 层:每个客户或每个环境对应一个独立运维项目,负责导入同一个系统,并维护自己的本地值文件和交付结果。

这三层分离后,同一个系统可以被多个客户项目重复使用,而不会把客户差异直接写死在系统定义里。

关键设计

1. 系统定义与客户配置分离

系统本身负责表达:

  • 系统包含哪些模块
  • 模块之间如何组合
  • 需要哪些系统变量和模块变量
  • 默认工作流和交付结构是什么

客户差异则放在运维项目和值文件里表达,例如:

  • 域名
  • IP / 端口
  • 证书路径
  • 资源规格
  • 环境开关
  • 客户特有依赖地址

这意味着“系统定义”可以保持稳定,“客户配置”可以独立演进。

2. 通过值文件做本地化

galaxy-ops 会为系统和模块初始化值文件,并在本地化阶段生成目标环境所需的配置结果。

可以把它理解为:

System / Module Spec
  + Customer Values
  -> Localized Output

也就是说:

  • 同一个 System 可以导入到多个 Ops Project
  • 每个 Ops Project 使用不同的 value.yml、模块值和系统值
  • 本地化后得到各客户独立的最终配置和部署结果

3. 通过导入和更新保持共享定义

gops prj import 用于把系统导入到客户运维项目中。

之后:

  • 公共系统定义可以继续演进
  • 客户项目可以通过 gops prj sync 获取共享定义的更新
  • 客户自己的值文件和本地配置仍保留在各自项目中

这样可以避免“每交付一个客户,就复制一份完全独立的系统代码”。

4. 模块级与系统级同时支持差异化

差异化不只发生在系统层,也可以发生在模块层:

  • 系统级值:控制整个系统的公共行为
  • 模块级值:控制具体模块在某个客户环境中的配置

这让同一个系统既能复用统一结构,也能在数据库、网关、采集、规则、路径等模块上做客户级差异。

最小流程

1. 定义可复用 Module
2. 组合形成 System
3. 为客户 A 创建 Ops Project,导入同一个 System
4. 为客户 B 创建 Ops Project,导入同一个 System
5. 分别维护客户 A / B 的值文件
6. 分别执行本地化与部署动作

对应到命令上,大致是:

# 创建系统
gops sys new --name web-stack

# 解析变量并打包(生成 web-stack-0.1.0.tar.gz)
cd web-stack
gops sys package
cd ..

# 客户 A
gops prj new --name customer-a
cd customer-a
gops prj import --path ../web-stack-0.1.0.tar.gz
gops prj sync

# 客户 B
cd ..
gops prj new --name customer-b
cd customer-b
gops prj import --path ../web-stack-0.1.0.tar.gz
gops prj sync

在这个模型里:

  • web-stack 是共享系统定义
  • customer-a 和 customer-b 是两个独立交付项目
  • 两个项目共享同一套系统结构,但保留各自的本地值和交付结果

这正是 galaxy-ops 支持多客户自动化部署的基础设计。

Documentation

Positioning

如果用一句话概括:

galaxy-ops 是用于组织、配置、组合和交付运维能力的开源工具;galaxy-flow 是负责定义和执行这些工作流的开源引擎。

About

No description, website, or topics provided.

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages