Documentation
¶
Overview ¶
Package setup 实现 Worker「免配置自启 setup」(FR-222,见 ADR-051)。
Worker 入口在加载配置前自检「是否已配置」(无 worker.yml/.yaml 且无 etc/node-identity.json); 未配置即调用本包:采集上线入参(有 TTY 交互逐项问、无 TTY 从命令行参数 + 环境变量读)→ 原子写 worker.yml(enrollment token 绝不落盘)→ 携 token 经 gRPC 首注册换身份 → 持久化 node_uuid/node_secret 到 etc/node-identity.json(0600)→ 把内存配置 + 首注册身份 交回入口转入正常 run(不重启进程、不重复注册)。
「下载」(取二进制)与「上线」(setup + 注册 + run)解耦:Worker 自己负责上线,下载归外部步骤。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func WriteWorkerYML ¶
WriteWorkerYML 原子写出 worker.yml(FR-222,见 ADR-051)。
字段与 install-worker.sh 写出的一组保持一致(name / control_plane / data_dir / ws.port / log)。**enrollment token 绝不写入**(一次性凭据不留盘,沿用 ADR-020 §2.3); data_dir 仅在显式给出时写(缺省留空 = ./data,不把派生绝对路径钉死进文件)。
直接拼 YAML 文本(而非引第三方 marshaler):字段少且固定、需带说明注释、对值做最小转义, 手写更可控、产物与脚本字节风格一致。
Types ¶
type Inputs ¶
type Inputs struct {
// ControlPlane CP gRPC 地址 host:port(必填)。
ControlPlane string
// EnrollToken enrollment token 明文(必填,仅本次注册用,绝不写入 worker.yml)。
EnrollToken string
// NodeName 节点名(可空,留空由 CP/token 预设名生效)。
NodeName string
// WSPort Worker 本机 WS 端口。
WSPort int
// DataDir 数据根(空 = 默认 ./data,缺省不写入 worker.yml)。
DataDir string
}
Inputs 是 setup 采集到的上线入参。
func CollectInputs ¶
CollectInputs 按形态采集上线入参:有 TTY 交互逐项问、无 TTY 从命令行参数 + 环境变量读。
type Options ¶
type Options struct {
// Args 命令行参数(不含程序名与配置文件位置参数),用于无 TTY 形态解析 --xxx flag。
Args []string
// In 交互输入源(默认 os.Stdin)。
In io.Reader
// Out 提示输出(默认 os.Stderr,避免污染 stdout)。
Out io.Writer
// IsTTY 是否交互式终端(默认探测 os.Stdin)。
IsTTY bool
// Registrar 执行注册(默认走 register.RegisterWithRetry)。注入便于测试。
Registrar func(ctx context.Context, cfg register.Config) (*register.Result, error)
}
Options 控制 setup 行为(注入便于测试)。