No description
Find a file
2026-01-30 02:55:25 +08:00
app Initial commit with core files 2026-01-30 02:49:28 +08:00
config.py Initial commit with core files 2026-01-30 02:49:28 +08:00
README.md 更新 README.md 2026-01-30 02:55:25 +08:00
requirements.txt Initial commit with core files 2026-01-30 02:49:28 +08:00
run.py Initial commit with core files 2026-01-30 02:49:28 +08:00

VMware vSphere Manager

一个基于 Python Flask 的 VMware vSphere Web 管理客户端,支持 vSphere 5.5 及以上版本。

功能特性

  • 🌐 跨平台支持 - Windows、Linux、macOS
  • 🔗 vSphere 集成 - 支持 VMware vSphere 5.5+
  • 💻 虚拟机管理 - 开关机、重启、监控
  • 🖥️ ESXi 主机管理 - 主机状态、资源监控
  • 💾 存储管理 - 数据存储监控、使用率统计
  • 📸 快照管理 - 创建、查看虚拟机快照
  • 🔐 安全认证 - 用户登录、会话管理
  • 📊 实时监控 - CPU、内存、存储使用情况
  • 🎨 现代界面 - Bootstrap 5 响应式设计

技术栈

  • 后端: Python 3.6+, Flask, pyvmomi 6.7.3
  • 前端: HTML5, Bootstrap 5, jQuery
  • 认证: Flask-Login
  • 表单: WTForms, Flask-WTF
  • API: VMware vSphere Web Services API

系统要求

  • Python 3.6 或更高版本
  • VMware vSphere 5.5 或更高版本
  • vCenter Server 访问权限
  • 现代浏览器支持

安装部署

1. 克隆项目

git clone <repository-url>
cd vmmanager

2. 安装依赖

# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate  # Linux/macOS
# 或
venv\Scripts\activate     # Windows

# 安装依赖包
pip install -r requirements.txt

3. 配置环境变量(可选)

# 设置 vCenter 连接信息(可选,也可在 Web 界面中设置)
export VSPHERE_HOST=vcenter.example.com
export VSPHERE_USER=administrator@vsphere.local
export VSPHERE_PASSWORD=your_password
export VSPHERE_PORT=443
export VSPHERE_SSL_VERIFY=false

# 设置 Flask 配置
export SECRET_KEY=your-secret-key
export FLASK_HOST=0.0.0.0
export FLASK_PORT=5001
export FLASK_DEBUG=false

4. 运行应用

# 使用启动脚本
python run.py

# 或直接使用 Flask
export FLASK_APP=run.py
flask run --host=0.0.0.0 --port=5001

5. 访问应用

打开浏览器访问: http://localhost:5001

默认登录账号:

  • 用户名: admin
  • 密码: admin

项目结构

vmmanager/
├── app/
│   ├── __init__.py          # Flask 应用工厂
│   ├── models.py            # 数据模型
│   ├── views.py             # 路由和视图函数
│   ├── vsphere_client.py    # vSphere API 客户端
│   ├── forms.py             # WTForms 表单定义
│   └── templates/           # Jinja2 模板
│       ├── base.html        # 基础模板
│       ├── login.html       # 登录页面
│       ├── connect.html     # vCenter 连接页面
│       ├── dashboard.html   # 仪表板
│       ├── vms.html         # 虚拟机列表
│       ├── vm_detail.html   # 虚拟机详情
│       ├── hosts.html       # ESXi 主机列表
│       ├── datastores.html  # 数据存储列表
│       ├── 404.html         # 404 错误页面
│       └── 500.html         # 500 错误页面
├── static/                  # 静态文件目录
│   ├── css/                # CSS 样式文件
│   ├── js/                 # JavaScript 文件
│   └── img/                # 图片文件
├── config.py               # 配置文件
├── requirements.txt        # Python 依赖包
├── run.py                 # 应用启动脚本
└── README.md              # 项目文档

使用指南

1. 连接 vCenter

  1. 使用 admin/admin 登录系统
  2. 在连接页面输入 vCenter 服务器信息
  3. 支持自定义端口和 SSL 证书验证设置

2. 管理虚拟机

  • 查看虚拟机列表和状态
  • 执行开机、关机、重启操作
  • 查看虚拟机详细信息
  • 管理虚拟机快照

3. 监控资源

  • ESXi 主机状态和资源使用情况
  • 数据存储容量和使用率统计
  • 实时性能监控数据

4. 安全特性

  • 基于会话的用户认证
  • CSRF 保护
  • 支持自签名证书连接

配置说明

开发环境配置

# config.py
class DevelopmentConfig(Config):
    DEBUG = True
    VSPHERE_SSL_VERIFY = False

生产环境配置

# config.py
class ProductionConfig(Config):
    DEBUG = False
    VSPHERE_SSL_VERIFY = True
    SECRET_KEY = 'your-production-secret-key'

环境变量配置

变量名 描述 默认值
SECRET_KEY Flask 密钥 dev-secret-key-change-in-production
VSPHERE_HOST vCenter 服务器地址 -
VSPHERE_USER vCenter 用户名 -
VSPHERE_PASSWORD vCenter 密码 -
VSPHERE_PORT vCenter 端口 443
VSPHERE_SSL_VERIFY SSL 证书验证 False
FLASK_HOST Flask 监听地址 0.0.0.0
FLASK_PORT Flask 监听端口 5001
FLASK_DEBUG Flask 调试模式 False

故障排除

常见问题

  1. 连接 vCenter 失败

    • 检查网络连接和防火墙设置
    • 确认 vCenter 服务器地址和端口
    • 验证用户名和密码格式
  2. SSL 证书错误

    • 在测试环境中可以禁用 SSL 验证
    • 生产环境建议使用有效证书
  3. 权限不足

    • 确认用户具有足够的 vSphere 权限
    • 检查 vCenter 角色和权限设置

日志调试

启用调试模式查看详细日志:

export FLASK_DEBUG=true
python run.py

开发说明

添加新功能

  1. app/views.py 中添加路由
  2. app/templates/ 中创建模板
  3. app/forms.py 中定义表单(如需要)
  4. app/vsphere_client.py 中添加 API 调用

贡献代码

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 发起 Pull Request

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

支持

如有问题或建议,请提交 Issue 或联系维护者。


注意: 本项目仅用于学习和开发目的,生产环境使用请确保遵循安全最佳实践。