setup

package
v0.21.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2026 License: MIT Imports: 14 Imported by: 0

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 IsStdinTTY

func IsStdinTTY() bool

IsStdinTTY 探测标准输入是否为交互式终端。

func WriteWorkerYML

func WriteWorkerYML(path string, in *Inputs) error

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

func CollectInputs(opts Options) (*Inputs, error)

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 行为(注入便于测试)。

type Result

type Result struct {
	// Config setup 写出并在内存构造的 Worker 配置(入口据此转 run,无需重读文件)。
	Config *workercfg.Config
	// Identity 首注册换得的节点身份(已持久化到 etc/node-identity.json)。
	// 入口据此跳过重复注册,直接以该身份起服务与心跳。
	Identity *register.Identity
}

Result 是 setup 的产物:转入正常 run 所需的内存配置与首注册身份。

func Run

func Run(ctx context.Context, configWorkDir string, opts Options) (*Result, error)

Run 执行完整 setup 流程并返回转 run 所需的配置与身份(FR-222,见 ADR-051)。

configWorkDir 是写 worker.yml 的目标目录(通常为进程工作目录 ".")。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL