Cloud-bot 是一个基于 Infrastructure as Code (IaC) 理念开发的云资源编排工具,通过 Terraform 实现跨云服务商的统一资源管理。只需一个命令,即可将工作节点部署到全球各地的云服务商,支持抢占式实例大幅降低成本。
- 🚀 一键部署: 通过 Terraform 模板快速部署云资源到多个云服务商
- 💰 成本优化: 支持抢占式实例,自动查找最低价格配置
- 🌍 多云支持: 统一管理阿里云、腾讯云、AWS、华为云等云服务商
- 🔄 动态模板: 基于云服务商 API 动态生成 Terraform 模板
- 📊 价格比对: 实时查询和比对不同云服务商的价格
- 🎯 智能补全: 支持 Bash/Zsh/Fish/PowerShell 命令自动补全
- ✅ 创建、列出、删除项目
- ✅ 项目级别的场景管理
- ✅ 项目初始化(预加载 Terraform providers)
- ✅ 从模板库创建场景
- ✅ 动态生成场景(基于云服务商 API)
- ✅ 场景部署和销毁
- ✅ 场景状态查询和资源验证
- ✅ 丰富的模板库(ECS、代理、文件服务器等)
- ✅ 支持静态模板和动态模板
- ✅ 模板价格信息管理
- ✅ 实时价格查询(阿里云 DescribePrice API)
- ✅ 跨区域价格比对
- ✅ 自动选择最低价格配置
- ✅ 价格信息缓存
| 云服务商 | 支持状态 | 功能 |
|---|---|---|
| 阿里云 | ✅ 完整支持 | ECS、抢占式实例、价格优化 |
| 腾讯云 | ✅ 完整支持 | CVM、竞价实例 |
| AWS | ✅ 完整支持 | EC2、Spot 实例 |
| 华为云 | ✅ 基础支持 | ECS、竞价实例 |
- ✅ 命令自动补全(Bash/Zsh/Fish/PowerShell)
- ✅ 交互式控制台
- ✅ 详细的帮助信息和使用示例
- ✅ 结构化日志输出
# 克隆仓库
git clone https://github.com/luckone/cloud-bot.git
cd cloud-bot
# 构建
make build
# 或安装到系统
make installgo install github.com/lucksec/cloud-bot/cmd/cloud-bot@latest创建配置文件(可选,有默认值):
cp .cloudboot.ini.example .cloudboot.ini
vim .cloudboot.ini# 1. 查看可用模板
cloud-bot template list
# 2. 创建项目
cloud-bot project create my-project
# 3. 从模板创建场景
cloud-bot scenario create my-project aliyun ecs
# 4. 部署场景(需要先配置云服务商凭据)
cloud-bot scenario deploy my-project <scenario-id>
# 5. 查看场景状态
cloud-bot scenario status my-project
# 6. 销毁场景
cloud-bot scenario destroy my-project <scenario-id># 配置阿里云凭据
cloud-bot credential set aliyun
# 配置腾讯云凭据
cloud-bot credential set tencent# 阿里云
export ALICLOUD_ACCESS_KEY="your-access-key"
export ALICLOUD_SECRET_KEY="your-secret-key"
# AWS
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"# 创建项目
cloud-bot project create web-server
# 创建场景(使用阿里云 ECS 模板)
cloud-bot scenario create web-server aliyun ecs
# 部署场景
cloud-bot scenario deploy web-server <scenario-id># 创建场景并自动应用最优价格配置
cloud-bot scenario create my-project aliyun ecs --optimal
# 输出示例:
# ✨ 找到最优配置:
# 区域: cn-hangzhou
# 实例类型: ecs.t5-lc1m1.small
# 价格: 0.0650 CNY/小时 (46.80 CNY/月)# 动态创建代理场景(自动选择区域和实例类型)
cloud-bot scenario create-dynamic my-project aliyun proxy
# 指定区域和实例类型
cloud-bot scenario create-dynamic my-project aliyun proxy cn-beijing \
--instance-type ecs.t6-c1m1.small --node-count 5# 比对 ECS 类型模板的价格
cloud-bot price compare ecs
# 查找最优价格配置
cloud-bot price optimal aliyun ecs
# 列出各区域价格
cloud-bot price regions aliyun ecs# 启动交互式控制台
cloud-bot console
# 在控制台中执行命令
cloud-bot> project create my-project
cloud-bot> scenario create my-project aliyun ecs
cloud-bot> scenario deploy my-project <scenario-id>cloud-bot/
├── cmd/
│ └── cloud-bot/ # 主程序入口
│ ├── main.go # 命令定义
│ ├── completion.go # 自动补全
│ └── console.go # 交互式控制台
├── internal/
│ ├── config/ # 配置管理
│ ├── credentials/ # 凭据管理
│ ├── domain/ # 领域模型
│ ├── logger/ # 日志系统
│ ├── repository/ # 数据访问层
│ └── service/ # 业务逻辑层
│ ├── aliyun_client.go # 阿里云客户端
│ ├── aws_client.go # AWS 客户端
│ ├── price_optimizer_service.go # 价格优化服务
│ ├── dynamic_template_service.go # 动态模板服务
│ └── terraform_service.go # Terraform 服务
├── templates/ # Terraform 模板库
│ ├── aliyun/ # 阿里云模板
│ ├── tencent/ # 腾讯云模板
│ ├── aws/ # AWS 模板
│ └── huaweicloud/ # 华为云模板
├── projects/ # 项目目录(运行时生成)
├── doc/ # 文档目录
├── go.mod
├── Makefile
└── README.md
cloud-bot project create <name> # 创建项目
cloud-bot project list # 列出所有项目
cloud-bot project init <name> # 初始化项目
cloud-bot project delete <name> # 删除项目cloud-bot scenario create <project> <provider> <template> [region] # 创建场景
cloud-bot scenario create-dynamic <project> <provider> <type> # 动态创建场景
cloud-bot scenario list <project> # 列出场景
cloud-bot scenario deploy <project> <scenario-id> # 部署场景
cloud-bot scenario destroy <project> <scenario-id> # 销毁场景
cloud-bot scenario status <project> [scenario-id] # 查看状态cloud-bot template list # 列出所有模板cloud-bot price list # 列出所有价格信息
cloud-bot price compare <type> # 比对价格
cloud-bot price optimal <provider> <template> # 查找最优配置
cloud-bot price regions <provider> <template> # 列出各区域价格cloud-bot credential set <provider> # 设置凭据
cloud-bot credential list # 列出已配置的凭据- Go 1.21+
- Terraform 1.0+
- 云服务商账户和凭据
# 下载依赖
make deps
# 构建
make build
# 运行测试
make test
# 代码格式化
make fmt
# 代码检查
make lint- 在
templates/<provider>/<template-name>/目录下创建模板文件 - 确保包含
main.tf文件 - 可选:添加
versions.tf,outputs.tf,variables.tf等文件 - 运行
cloud-bot template list验证模板是否被识别
项目采用 Clean Architecture 设计:
- domain: 领域模型,定义核心业务实体
- repository: 数据访问层,负责数据持久化
- service: 业务逻辑层,实现核心业务功能
- config: 配置管理,统一管理应用配置
- 项目命名: 使用有意义的项目名称,便于管理
- 场景隔离: 每个场景使用独立的 UUID,互不干扰
- 及时清理: 测试完成后及时销毁场景,避免资源浪费
- 配置管理: 敏感信息(如 AK/SK)不要提交到版本控制
- 成本控制: 使用抢占式实例和价格优化功能降低成本
- 状态备份: 重要的 Terraform 状态文件建议备份
- Terraform 要求: 确保已安装 Terraform 并在 PATH 中
- 云服务商权限: 确保 AK/SK 具有创建 VPC、安全组、实例等权限
- 成本控制: 使用抢占式实例可以大幅降低成本,但可能被回收
- 资源清理: 及时销毁不需要的场景,避免资源浪费
- 状态管理: 每个场景的 Terraform 状态文件保存在场景目录下
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
- 问题反馈: GitHub Issues
- 功能建议: GitHub Discussions
- wechat: Jom1ng (备注信息否则不通过)
如果这个项目对你有帮助,请给一个 ⭐ Star!
Made with ❤️ by cloud-bot Team