mgmt/README.md

217 lines
5.8 KiB
Markdown

# 🏗️ 基础设施管理项目
这是一个现代化的多云基础设施管理平台,集成 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. 环境准备
```bash
# 克隆项目
git clone <repository-url>
cd mgmt
# 设置开发环境
make setup
```
### 2. 配置云服务商
```bash
# 复制配置模板
cp infrastructure/environments/dev/terraform.tfvars.example infrastructure/environments/dev/terraform.tfvars
# 编辑配置文件,填入你的云服务商凭据
vim infrastructure/environments/dev/terraform.tfvars
```
### 3. 初始化基础设施
```bash
# 初始化 OpenTofu
make init
# 查看执行计划
make plan
# 应用基础设施变更
make apply
```
### 4. 部署应用
```bash
# 检查 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 流程
### 基础设施部署流程
1. **代码提交** → 触发 Gitea Actions
2. **OpenTofu Plan** → 生成执行计划
3. **人工审核** → 确认变更
4. **OpenTofu Apply** → 应用基础设施变更
5. **Ansible 部署** → 配置和部署应用
### 应用部署流程
1. **应用代码更新** → 构建 Docker 镜像
2. **镜像推送** → 推送到镜像仓库
3. **Compose 更新** → 更新服务定义
4. **Swarm 部署** → 滚动更新服务
5. **健康检查** → 验证部署状态
## 📊 监控和可观测性
### 监控组件
- **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)
### 应用测试
- **单元测试**: 应用代码测试
- **集成测试**: 服务间集成测试
- **端到端测试**: 完整流程测试
## 📚 文档
- [架构概览](docs/architecture/project-overview.md)
- [部署指南](docs/runbooks/deployment-guide.md)
- [运维手册](docs/runbooks/operations-guide.md)
- [故障排除](docs/runbooks/troubleshooting.md)
- [API 文档](docs/api/README.md)
## 🤝 贡献指南
1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交变更 (`git commit -m 'Add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 创建 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🆘 支持
如果你遇到问题或有疑问:
1. 查看 [文档](docs/)
2. 搜索 [Issues](../../issues)
3. 创建新的 [Issue](../../issues/new)
## 🎉 致谢
感谢所有为这个项目做出贡献的开发者和社区成员!