eNMS-automation/eNMS
GitHub: eNMS-automation/eNMS
eNMS 是一个企业级厂商无关的网络自动化平台,提供基于工作流的配置管理、验证和脚本执行服务。
Stars: 837 | Forks: 160
eNMS
一个企业级、厂商无关的网络自动化平台。
# 简介 eNMS 是一个厂商无关的NMS,专为构建基于工作流的网络自动化解决方案而设计。 [](https://www.demo.enms.io/workflow_builder) 它涵盖了网络自动化的以下几个方面: - **配置管理服务**:使用 Git 进行备份、配置变更与回滚。 - **验证服务**:使用 Netmiko 和 NAPALM 验证设备状态数据。 - **Ansible 服务**:存储和运行 Ansible Playbook。 - **REST 服务**:发送带有可变 URL 和 Payload 的 REST 调用。 - **Python 脚本服务**:任何 Python 脚本都可以集成到 Web UI 中。eNMS 会自动在 UI 中为脚本的输入参数生成表单。 - **工作流**:服务可以在工作流中以图形方式组合在一起。 - **调度**:服务和工作流可以安排在稍后时间启动,或使用 CRON 表达式定期运行。 - **事件驱动的自动化**:服务和工作流可以通过 REST API 触发。 # 主要功能 ## 1. 网络创建 您的网络拓扑可以手动创建,或从外部的 Source of Truth(OpenNMS、LibreNMS 或 Netbox)导入。 创建后,它会显示在一个可排序和可搜索的表格中。 一个仪表板通过动态图表提供您网络的图形概览。 清单 | 仪表板 :----------------------------------:|:-----------------------------------: [](https://www.demo.enms.io/table/device) | [](https://www.demo.enms.io/dashboard) - 文档:_[网络创建](https://enms.readthedocs.io/en/latest/inventory/network_creation/)_ ## 2. 网络可视化 eNMS 可以在世界地图(Google Map 或 Open Street Map)上显示您的网络。 每个设备都显示在其 GPS 坐标位置。 网络拓扑图可以使用清单中的设备和链路创建,并添加标签以提高清晰度。 地理视图 | 网络构建器 :-------------------------------:|:-------------------------------: [
](https://www.demo.enms.io/visualization/geographical_view) | [
](https://www.demo.enms.io/visualization/logical_view)
- 文档:_[网络可视化](https://enms.readthedocs.io/en/latest/inventory/network_visualization/)_
## 3. 服务创建
eNMS 附带了一些利用 `ansible`、`requests`、`netmiko`、`napalm` 等库执行简单自动化任务的“默认服务”。然而,任何 Python 脚本绝对可以转变为一个服务。如果您的 Python 脚本接受输入参数,eNMS 将自动在 Web UI 中生成一个表单。
服务可以组合成一个工作流。
[](https://www.demo.enms.io/workflow_builder)
- 文档:_[服务](https://enms.readthedocs.io/en/latest/automation/services/)_, _[工作流系统](https://enms.readthedocs.io/en/latest/automation/workflows/)_
## 5. 配置管理
eNMS 可用作设备配置备份工具,类似于 Oxidized/Rancid,具有以下功能:
- 轮询网络设备并将最新配置存储在数据库中
- 存储可以从设备 CLI 获取的任何操作数据(例如 ``show version``、``get facts`` 等)
- 在所有配置中搜索任何文本或正则表达式
- 将设备配置下载到本地文本文件
- 使用 REST API 支持返回指定设备的配置
- 将所有配置导出到远程 Git 仓库(例如 Gitlab)
- 查看配置不同版本之间的 Git 风格的差异
搜索配置 | 比较配置
:--------------------------------------------:|:-------------------------------:
[](https://www.demo.enms.io/table/configuration) | [](https://www.demo.enms.io/table/configuration)
- 文档:_[配置管理](https://enms.readthedocs.io/en/latest/inventory/configuration_management/)_
## 6. 事件驱动的自动化
虽然服务可以直接从 UI 立即运行,您也可以安排它们在稍后时间运行,或通过定义频率或 CRON 表达式定期运行。所有计划任务都显示在日历中。
[](https://www.demo.enms.io/table/task)
服务也可以通过编程方式执行:eNMS 拥有一个 REST API 和一个 CLI 接口,可用于创建、更新和删除任何类型的对象,也可用于触发服务的执行。
- 文档:_[调度](https://enms.readthedocs.io/en/latest/automation/scheduling/)_
# 开放核心版与企业版
eNMS 有两个版本:一个**开放核心**版本(此仓库),和一个具有生产部署高级功能的**企业版**。
| 功能 | 开放核心版 | 企业版 |
|:-------:|:---------:|:------------------:|
| 工作流自动化 | ✓ | ✓ |
| 配置管理 | ✓ | ✓ |
| 网络可视化 | ✓ | ✓ |
| REST API | ✓ | ✓ |
| **多用户认证** | ✗ | ✓ |
| **基于角色的访问控制** | ✗ | ✓ |
| **高级调度器** | ✗ | ✓ |
| **TACACS+ / LDAP / Duo 2FA** | ✗ | ✓ |
| **服务导入/导出** | ✗ | ✓ |
| **迁移机制** | ✗ | ✓ |
| **变更回滚/审计追踪** | ✗ | ✓ |
| **管理面板** | ✗ | ✓ |
| **生产脚本与工具** | ✗ | ✓ |
| **专业支持** | ✗ | ✓ |
## 企业版
### 安全与认证
- **多用户认证系统**:完整的登录页面和安全会话管理
- **企业级认证**:支持 TACACS+、LDAP 和 Duo 2FA 集成
- **基于角色的访问控制 (RBAC)**:为用户或组配置细粒度权限
- 控制谁可以查看、编辑或运行特定的工作流和服务(按用户或按团队)
- 定义对设备、配置和网络资源的访问级别
- **用户与组管理**:用于管理团队和权限的综合管理界面
### 高级自动化
- **调度器应用**:用于工作流自动化的高级调度功能
- 使用 crontab 表达式或特定日期/时间进行调度
- 计划任务的集中视图和控制(带有日历界面)
- **服务导入/导出**:将服务和工作流打包为 `.tgz` 归档文件
- 在不同的 eNMS 实例之间共享自动化解决方案
- 创建关键工作流的备份归档
- 在开发和生产环境之间传输工作流
- **变更跟踪与回滚**:具有回滚能力的完整审计追踪
- 每次修改都被记录(谁在何时更改了什么)
- 一键回滚到任何先前状态
### 企业管理
- **管理面板**:用于系统管理的集中式仪表板
- 服务器健康监控和性能指标
- Worker 进程管理和负载均衡
- **迁移机制**:用于在 eNMS 版本之间升级的无缝备份和迁移机制
- 以 YAML 或 JSON 格式导出/导入您的整个数据库
- 版本控制的迁移确保升级期间的数据完整性
- **生产工具**:企业级的维护脚本和工具
- 数据库优化和备份管理
- 高级 SQL 调试和日志分析
# 架构
[](https://enms.readthedocs.io/en/latest/)
# 快速安装
```
Install python 3.12+ (earlier versions not supported)
git clone https://github.com/afourmy/eNMS.git
cd eNMS
pip3 install -r build/requirements/requirements.txt
export FLASK_APP=app.py
flask run --host=0.0.0.0
Log in (default credentials: admin / admin)
```
标签:Ansible集成, Docker 部署, Git备份, IT运维, NAPALM, Netmiko, REST API, Socks5代理, TCP SYN 扫描, Web UI, 事件驱动, 仪表板, 任务调度, 企业级软件, 供应商无关, 地图显示, 工作流引擎, 库存管理, 系统提示词, 网络安全研究, 网络自动化, 网络运维, 逆向工具, 验证服务