- 重构项目目录结构 - 添加 OpenTofu 多云支持 - 配置 Ansible 自动化部署 - 集成 Gitea Actions CI/CD 流水线 - 添加 Docker Swarm 管理 - 完善监控和安全配置 |
||
|---|---|---|
| .gitea | ||
| configuration | ||
| containers | ||
| infrastructure | ||
| scripts | ||
| .gitignore | ||
| Makefile | ||
| README.md | ||
README.md
🏗️ 基础设施管理项目
这是一个现代化的多云基础设施管理平台,集成 OpenTofu、Ansible、Docker Swarm 和 Gitea CI/CD。
🎯 项目特性
- 🌩️ 多云支持: Oracle Cloud, 华为云, Google Cloud, AWS, DigitalOcean
- 🏗️ 基础设施即代码: 使用 OpenTofu 管理云资源
- ⚙️ 配置管理: 使用 Ansible 自动化配置和部署
- 🐳 容器编排: Docker Swarm 集群管理
- 🔄 CI/CD: Gitea Actions 自动化流水线
- 📊 监控: Prometheus + Grafana 监控体系
- 🔐 安全: 多层安全防护和合规性
📁 项目结构
mgmt/
├── .gitea/workflows/ # CI/CD 工作流
├── infrastructure/ # OpenTofu 基础设施代码
│ ├── environments/ # 环境配置 (dev/staging/prod)
│ ├── modules/ # 可复用模块
│ ├── providers/ # 云服务商配置
│ └── shared/ # 共享配置
├── configuration/ # Ansible 配置管理
│ ├── inventories/ # 主机清单
│ ├── playbooks/ # 剧本
│ ├── roles/ # 角色
│ └── group_vars/ # 组变量
├── containers/ # 容器化应用
│ ├── applications/ # 应用容器
│ ├── infrastructure/ # 基础设施容器
│ └── compose/ # Docker Compose 文件
├── monitoring/ # 监控配置
├── scripts/ # 自动化脚本
├── docs/ # 文档
└── Makefile # 项目管理命令
🚀 快速开始
1. 环境准备
# 克隆项目
git clone <repository-url>
cd mgmt
# 设置开发环境
make setup
2. 配置云服务商
# 复制配置模板
cp infrastructure/environments/dev/terraform.tfvars.example infrastructure/environments/dev/terraform.tfvars
# 编辑配置文件,填入你的云服务商凭据
vim infrastructure/environments/dev/terraform.tfvars
3. 初始化基础设施
# 初始化 OpenTofu
make init
# 查看执行计划
make plan
# 应用基础设施变更
make apply
4. 部署应用
# 检查 Ansible 配置
make ansible-check
# 部署应用
make ansible-deploy
🛠️ 常用命令
| 命令 | 描述 |
|---|---|
make help |
显示所有可用命令 |
make setup |
设置开发环境 |
make init |
初始化 OpenTofu |
make plan |
生成基础设施执行计划 |
make apply |
应用基础设施变更 |
make ansible-deploy |
部署应用 |
make docker-up |
启动开发环境 |
make test |
运行测试 |
make clean |
清理临时文件 |
🌩️ 支持的云服务商
Oracle Cloud Infrastructure (OCI)
- ✅ 计算实例
- ✅ 网络配置 (VCN, 子网, 安全组)
- ✅ 存储 (块存储, 对象存储)
- ✅ 负载均衡器
华为云
- ✅ 弹性云服务器 (ECS)
- ✅ 虚拟私有云 (VPC)
- ✅ 弹性负载均衡 (ELB)
- ✅ 云硬盘 (EVS)
Google Cloud Platform
- ✅ Compute Engine
- ✅ VPC 网络
- ✅ Cloud Load Balancing
- ✅ Persistent Disk
Amazon Web Services
- ✅ EC2 实例
- ✅ VPC 网络
- ✅ Application Load Balancer
- ✅ EBS 存储
DigitalOcean
- ✅ Droplets
- ✅ VPC 网络
- ✅ Load Balancers
- ✅ Block Storage
🔄 CI/CD 流程
基础设施部署流程
- 代码提交 → 触发 Gitea Actions
- OpenTofu Plan → 生成执行计划
- 人工审核 → 确认变更
- OpenTofu Apply → 应用基础设施变更
- Ansible 部署 → 配置和部署应用
应用部署流程
- 应用代码更新 → 构建 Docker 镜像
- 镜像推送 → 推送到镜像仓库
- Compose 更新 → 更新服务定义
- Swarm 部署 → 滚动更新服务
- 健康检查 → 验证部署状态
📊 监控和可观测性
监控组件
- Prometheus: 指标收集和存储
- Grafana: 可视化仪表板
- AlertManager: 告警管理
- Node Exporter: 系统指标导出
日志管理
- ELK Stack: Elasticsearch + Logstash + Kibana
- Fluentd: 日志收集和转发
- 结构化日志: JSON 格式标准化
🔐 安全最佳实践
基础设施安全
- 网络隔离: VPC, 安全组, 防火墙
- 访问控制: IAM 角色和策略
- 数据加密: 传输和静态加密
- 密钥管理: 云服务商密钥管理服务
应用安全
- 容器安全: 镜像扫描, 最小权限
- 网络安全: 服务网格, TLS 终止
- 秘密管理: Docker Secrets, Ansible Vault
- 安全审计: 日志监控和审计
🧪 测试策略
基础设施测试
- 语法检查: OpenTofu validate
- 安全扫描: Checkov, tfsec
- 合规检查: OPA (Open Policy Agent)
应用测试
- 单元测试: 应用代码测试
- 集成测试: 服务间集成测试
- 端到端测试: 完整流程测试
📚 文档
🤝 贡献指南
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交变更 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
🆘 支持
如果你遇到问题或有疑问:
🎉 致谢
感谢所有为这个项目做出贡献的开发者和社区成员!