Go to file
Houzhong Xu 377f176501
refactor: 更新项目结构和文档,移除不再使用的配置文件
- 修改README.md,更新项目特性和目录结构说明
- 重命名基础设施代码目录为tofu,并添加Docker Swarm配置目录
- 移除不再使用的Docker Compose和Traefik配置文件
- 更新Terraform配置,专注于Oracle Cloud支持,移除华为云相关配置
- 清理开发环境变量和示例文件
2025-09-20 16:49:32 +00:00
.gitea feat: 集成 OpenTofu + Ansible + Gitea CI/CD 2025-09-20 10:48:41 +00:00
configuration refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
docs/setup refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
infrastructure/environments/dev refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
scripts refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
swarm refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
tofu refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
.gitignore feat: 集成 OpenTofu + Ansible + Gitea CI/CD 2025-09-20 10:48:41 +00:00
Makefile feat: 集成 OpenTofu + Ansible + Gitea CI/CD 2025-09-20 10:48:41 +00:00
README.md refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
key.md refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00
mgmt.sh refactor: 更新项目结构和文档,移除不再使用的配置文件 2025-09-20 16:49:32 +00:00

README.md

🏗️ 基础设施管理项目

这是一个现代化的多云基础设施管理平台,专注于 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. 环境准备

# 克隆项目
git clone <repository-url>
cd mgmt

# 检查环境状态
./mgmt.sh status

# 快速部署(适用于开发环境)
./mgmt.sh deploy

2. 配置云服务商

# 复制配置模板
cp tofu/environments/dev/terraform.tfvars.example tofu/environments/dev/terraform.tfvars

# 编辑配置文件,填入你的云服务商凭据
vim tofu/environments/dev/terraform.tfvars

3. 初始化基础设施

# 初始化 OpenTofu
./mgmt.sh tofu init

# 查看执行计划
./mgmt.sh tofu plan

# 应用基础设施变更
cd tofu/environments/dev && tofu apply

4. 部署 Docker Swarm 服务

# 初始化 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 <cmd> Docker Swarm 管理命令
./mgmt.sh tofu <cmd> 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)

应用测试

  • 单元测试: 应用代码测试
  • 集成测试: 服务间集成测试
  • 端到端测试: 完整流程测试

📚 文档

🤝 贡献指南

  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 文件了解详情。

🆘 支持

如果你遇到问题或有疑问:

  1. 查看 文档
  2. 搜索 Issues
  3. 创建新的 Issue

🎉 致谢

感谢所有为这个项目做出贡献的开发者和社区成员!