39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
|
|
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"`
|
|||
|
|
}
|