217 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			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)
 | |
| 
 | |
| ## 🎉 致谢
 | |
| 
 | |
| 感谢所有为这个项目做出贡献的开发者和社区成员! |