| .. | ||
| cmd | ||
| internal/pulumi | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| Makefile | ||
| Readme.md | ||
PulumiGo/
├── cmd/ # Cobra 命令模块
│ ├── root.go # 注册所有命令和全局参数
│ ├── init.go # 初始化 go mod 依赖
│ ├── up.go # Pulumi 部署资源
│ ├── down.go # Pulumi 销毁资源
│ ├── export.go # 导出 stack 状态
│ ├── import.go # 导入 stack 状态
│ └── ansible.go # 执行 ansible-playbook(调用外部脚本)
│
├── internal/ # 项目内部逻辑模块(不导出)
│ └── pulumi/infra.go # Pulumi 基础设施部署定义
│
├── config/ # 多环境配置目录(示例)
│ └── sit/ # 示例环境 sit 配置文件(yaml/json 等)
│
├── scripts/ # legacy 脚本(bash/sh)
│ └── run.sh # 模拟入口,可被替换为 Go CLI
│
├── main.go # 程序主入口,调用 cmd.Execute()
├── go.mod # Go module 定义
├── go.sum # Go 依赖锁定文件
├── Makefile # 构建 & 调试命令
└── README.md # 项目说明
设计理念
- 区域 说明
- cmd/ 所有子命令都集中在这里,Cobra 自动识别
- internal/ Go 推荐实践:内部模块放入 internal 避免外部导入
- pulumi/ 用于封装 pulumi.Run() 中定义的基础设施资源
- scripts/ 用于兼容旧 run.sh 方式,也方便对比
- config/ 按环境管理 config & inventory 等配置
- Makefile 简化 build, run, up, down, ansible 等命令
✅ 示例命令
- make build
- 启动部署(Go + Pulumi) ./PulumiGo up --env sit
- 导出 stack 状态 ./PulumiGo export
- 调用 ansible 脚本 ./PulumiGo ansible