一、概览
NetBox 是一个开源的 IP 地址管理(IPAM)和数据中心基础设施管理(DCIM)工具,广泛用于管理和跟踪企业网络的设备、连接、IP 地址、虚拟化资源等。它由 DigitalOcean 开发并开源,目的是提供一个集中化的平台来管理网络基础设施,帮助网络管理员、系统管理员和基础设施工程师提高工作效率。
二、主要功能
- DCIM (数据中心基础设施管理)
netbox 的 dcim 可以将站点、区域、租户、机柜、设备等很好的管理起来,并且这几项元素之间可以产生关联关系,能够通过其中一个,找到其他的,例如通过站点看到有多少机柜或设备
可以在每个设备创建接口,然后连接起来,可以追踪线缆的连接关系 - IPAM
IP 地址管理功能,需要先定义前缀列表,会自动组成父子的关系,例如 16 位的会自动包含 24 位的地址段
三、部署
推荐使用 docker-compose 部署,比较简单方便些
可以在 netbox-docker 项目的 readme 中找到安装方式,这里将其列出
git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker
tee docker-compose.override.yml EOF
services:
netbox:
ports:
- 8000:8080
EOF
docker compose pull
docker compose up
如上所示,安装完成后会侦听 8000 端口。
使用:
docker compose exec netbox /opt/netbox/
netbox/manage.py createsuperuser
命令创建超级管理员。
创建成功后,可通过 http://ip:8000 端口访问。
四、创建设备
1、介绍
强烈推荐使用 API 创建设备,而不是通过 Web 端添加,虽然 netbox 能够导出数据,但是不方便将所有数据批量导出,而且再导入也没那么方便。
有些信息,例如服务器的 CPU、内存、硬盘等信息,可以通过代码获取,并写入到 netbox,这样就保证了数据的准确性,更新的及时性。
可以通过定义 toml 格式的文件,将配置都写到 toml 内,用 Python 读取写入到 Mongo 再使用 netbox 的 Python 模块写入到 netbox。
2、编写toml
定义租户。
[[netbox.tenancy.tenants]]
test01 = { name = "公司1", slug = 'company1' }
test02 = { name = "公司2", slug = 'company2' }
定义 regions。
[[netbox.dcim.regions]]
sh = { name = "上海", slug = 'sh'}
bj = { name = "北京", slug = 'bj'}
定义 sites。
[[netbox.dcim.sites]]
site01 = { "name" = "site01", "slug" = "site01", "status" = "active", physical_address = "北京市海淀区XXX", latitude = 30.0, longitude = 110.0, region = { name = "北京" }}
site02 = { "name" = "site02", "slug" = "site02", "status" = "active", physical_address = "中国上海市浦东新区XXX, region = { name = "上海"} }