# 🏗️ 基础设施管理项目 这是一个现代化的多云基础设施管理平台,专注于 OpenTofu、Ansible 和 Docker Swarm 的集成管理。 ## 🎯 项目特性 - **🌩️ 多云支持**: Oracle Cloud, 华为云, Google Cloud, AWS, DigitalOcean - **🏗️ 基础设施即代码**: 使用 OpenTofu 管理云资源 - **⚙️ 配置管理**: 使用 Ansible 自动化配置和部署 - **🐳 容器编排**: Docker Swarm 集群管理和服务编排 - **🔄 CI/CD**: Gitea Actions 自动化流水线 - **📊 监控**: Prometheus + Grafana 监控体系 - **🔐 安全**: 多层安全防护和合规性 ## 📁 项目结构 ``` mgmt/ ├── .gitea/workflows/ # CI/CD 工作流 ├── tofu/ # OpenTofu 基础设施代码 │ ├── environments/ # 环境配置 (dev/staging/prod) │ ├── modules/ # 可复用模块 │ ├── providers/ # 云服务商配置 │ └── shared/ # 共享配置 ├── swarm/ # Docker Swarm 配置 │ ├── stacks/ # Docker Stack 配置文件 │ ├── configs/ # Traefik 等基础设施配置 │ └── scripts/ # Swarm 管理脚本 ├── configuration/ # Ansible 配置管理 │ ├── inventories/ # 主机清单 │ ├── playbooks/ # 剧本 │ ├── roles/ # 角色 │ └── group_vars/ # 组变量 ├── monitoring/ # 监控配置 ├── scripts/ # 自动化脚本 │ ├── setup/ # 环境设置脚本 │ └── utilities/ # 实用工具脚本 ├── mgmt.sh # 项目管理主脚本 └── Makefile # 项目管理命令 ``` ## 🚀 快速开始 ### 1. 环境准备 ```bash # 克隆项目 git clone cd mgmt # 检查环境状态 ./mgmt.sh status # 快速部署(适用于开发环境) ./mgmt.sh deploy ``` ### 2. 配置云服务商 ```bash # 复制配置模板 cp tofu/environments/dev/terraform.tfvars.example tofu/environments/dev/terraform.tfvars # 编辑配置文件,填入你的云服务商凭据 vim tofu/environments/dev/terraform.tfvars ``` ### 3. 初始化基础设施 ```bash # 初始化 OpenTofu ./mgmt.sh tofu init # 查看执行计划 ./mgmt.sh tofu plan # 应用基础设施变更 cd tofu/environments/dev && tofu apply ``` ### 4. 部署 Docker Swarm 服务 ```bash # 初始化 Docker Swarm ./mgmt.sh swarm init # 部署 Traefik 反向代理 ./mgmt.sh swarm deploy traefik swarm/stacks/traefik-swarm-stack.yml # 部署示例服务 ./mgmt.sh swarm deploy demo swarm/stacks/demo-services-stack.yml ``` ## 🛠️ 常用命令 | 命令 | 描述 | |------|------| | `./mgmt.sh status` | 显示项目状态总览 | | `./mgmt.sh deploy` | 快速部署所有服务 | | `./mgmt.sh cleanup` | 清理所有部署的服务 | | `./mgmt.sh swarm ` | Docker Swarm 管理命令 | | `./mgmt.sh tofu ` | OpenTofu 管理命令 | | `swarm/scripts/swarm-manager.sh help` | Swarm 管理帮助 | | `scripts/setup/setup-opentofu.sh help` | OpenTofu 设置帮助 | ## 🌩️ 支持的云服务商 ### 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) ## 🎉 致谢 感谢所有为这个项目做出贡献的开发者和社区成员!