222 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # 🏗️ 基础设施管理项目
 | ||
| 
 | ||
| 这是一个现代化的多云基础设施管理平台,专注于 OpenTofu、Ansible 和 Nomad + Podman 的集成管理。
 | ||
| 
 | ||
| ## 🎯 项目特性
 | ||
| 
 | ||
| - **🌩️ 多云支持**: Oracle Cloud, 华为云, Google Cloud, AWS, DigitalOcean
 | ||
| - **🏗️ 基础设施即代码**: 使用 OpenTofu 管理云资源
 | ||
| - **⚙️ 配置管理**: 使用 Ansible 自动化配置和部署
 | ||
| - **🐳 容器编排**: Nomad 集群管理和 Podman 容器运行时
 | ||
| - **🔄 CI/CD**: Gitea Actions 自动化流水线
 | ||
| - **📊 监控**: Prometheus + Grafana 监控体系
 | ||
| - **🔐 安全**: 多层安全防护和合规性
 | ||
| 
 | ||
| ## 📁 项目结构
 | ||
| 
 | ||
| ```
 | ||
| mgmt/
 | ||
| ├── .gitea/workflows/           # CI/CD 工作流
 | ||
| ├── tofu/                       # OpenTofu 基础设施代码
 | ||
| │   ├── environments/          # 环境配置 (dev/staging/prod)
 | ||
| │   ├── modules/               # 可复用模块
 | ||
| │   ├── providers/             # 云服务商配置
 | ||
| │   └── shared/                # 共享配置
 | ||
| ├── configuration/             # Ansible 配置管理
 | ||
| │   ├── inventories/          # 主机清单
 | ||
| │   ├── playbooks/            # 剧本
 | ||
| │   ├── roles/                # 角色
 | ||
| │   └── group_vars/           # 组变量
 | ||
| ├── monitoring/               # 监控配置
 | ||
| ├── scripts/                  # 自动化脚本
 | ||
| │   ├── setup/               # 环境设置脚本
 | ||
| │   └── utilities/           # 实用工具脚本
 | ||
| ├── mgmt.sh                   # 项目管理主脚本
 | ||
| └── Makefile                 # 项目管理命令
 | ||
| ```
 | ||
| 
 | ||
| **注意:** 项目已从 Docker Swarm 迁移到 Nomad + Podman,原有的 swarm 目录已不再使用。
 | ||
| 
 | ||
| ## 🚀 快速开始
 | ||
| 
 | ||
| ### 1. 环境准备
 | ||
| 
 | ||
| ```bash
 | ||
| # 克隆项目
 | ||
| git clone <repository-url>
 | ||
| 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. 部署 Nomad 服务
 | ||
| 
 | ||
| ```bash
 | ||
| # 部署 Consul 集群
 | ||
| nomad run /root/mgmt/consul-cluster-nomad.nomad
 | ||
| 
 | ||
| # 查看 Nomad 任务
 | ||
| nomad job status
 | ||
| 
 | ||
| # 查看节点状态
 | ||
| nomad node status
 | ||
| ```
 | ||
| 
 | ||
| ## 🛠️ 常用命令
 | ||
| 
 | ||
| | 命令 | 描述 |
 | ||
| |------|------|
 | ||
| | `./mgmt.sh status` | 显示项目状态总览 |
 | ||
| | `./mgmt.sh deploy` | 快速部署所有服务 |
 | ||
| | `./mgmt.sh cleanup` | 清理所有部署的服务 |
 | ||
| | `./mgmt.sh tofu <cmd>` | OpenTofu 管理命令 |
 | ||
| | `nomad job status` | 查看 Nomad 任务状态 |
 | ||
| | `nomad node status` | 查看 Nomad 节点状态 |
 | ||
| | `podman ps` | 查看运行中的容器 |
 | ||
| | `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. **应用代码更新** → 构建容器镜像
 | ||
| 2. **镜像推送** → 推送到镜像仓库
 | ||
| 3. **Nomad Job 更新** → 更新任务定义
 | ||
| 4. **Nomad 部署** → 滚动更新服务
 | ||
| 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)
 | ||
| 
 | ||
| ## 🎉 致谢
 | ||
| 
 | ||
| 感谢所有为这个项目做出贡献的开发者和社区成员! |