package templating // Template 是 YAML 模板的顶层结构 type Template struct { Description string `yaml:"description,omitempty"` Copyright string `yaml:"copyright,omitempty"` Stages map[string][]Step `yaml:"stages"` } // Step 表示一个操作步骤 type Step struct { Type string `yaml:"type"` // "file" 或 "script" Path string `yaml:"path,omitempty"` // 文件路径(仅 type=file) Content string `yaml:"content"` // 多行内容 Condition string `yaml:"condition,omitempty"` // 条件表达式(Go template) } // Context 是渲染模板时的上下文数据 type Context struct { Node NodeInfo `json:"node"` Cluster ClusterInfo `json:"cluster"` } // NodeInfo 节点信息 type NodeInfo struct { Hostname string `json:"hostname"` OldHostname string `json:"old_hostname,omitempty"` Domain string `json:"domain"` IP string `json:"ip"` } // ClusterInfo 集群信息 type ClusterInfo struct { Name string `json:"name"` Domain string `json:"domain"` AdminEmail string `json:"admin_email"` TimeZone string `json:"time_zone"` }