您现在的位置是:系统运维 >>正文
NetBox介绍和自动化管理配置
系统运维5195人已围观
简介一、概览NetBox 是一个开源的 IP 地址管理IPAM)和数据中心基础设施管理DCIM)工具,广泛用于管理和跟踪企业网络的设备、连接、IP 地址、虚拟化资源等。它由 DigitalOcean 开发 ...

一 、介绍概览
NetBox 是和自一个开源的 IP 地址管理(IPAM)和数据中心基础设施管理(DCIM)工具 ,广泛用于管理和跟踪企业网络的动化设备 、连接、管理IP 地址、配置虚拟化资源等。介绍它由 DigitalOcean 开发并开源 ,和自目的动化是提供一个集中化的平台来管理网络基础设施 ,帮助网络管理员 、管理系统管理员和基础设施工程师提高工作效率 。配置
二、亿华云介绍主要功能
DCIM (数据中心基础设施管理)netbox 的和自 dcim 可以将站点、区域 、动化租户 、管理机柜、配置设备等很好的管理起来,并且这几项元素之间可以产生关联关系,能够通过其中一个 ,找到其他的,例如通过站点看到有多少机柜或设备可以在每个设备创建接口,然后连接起来 ,可以追踪线缆的连接关系IPAMIP 地址管理功能 ,需要先定义前缀列表,源码库会自动组成父子的关系,例如 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 up1.2.3.4.5.6.7.8.9.10.如上所示,安装完成后会侦听 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 }1.2.3.定义 regions。
复制[[netbox.dcim.regions]] sh = { name = "上海", slug = sh} bj = { name = "北京", slug = bj}1.2.3.定义 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 = "上海"} }1.2.3.可以看到 sites 关联了 region 。
定义 locations。
复制[[netbox.dcim.locations]] # 也就是模块 100 = { name = "一期100模块", slug = "100", site = { name= "site01" }}1.2.3.locations 中关联了 site。
定义 racks。
复制[[netbox.dcim.racks]] # 204 模块 "一期100模块_A01" = { name = "一期100模块_A01", site = { name = "site01" }, status = "available", u_height = 42, location = { name = "一期100模块" }, tenant = { name = "公司1"}}1.2.3.racks 中关联了 site, location, tenant。建站模板
定义 manufacturers 。
复制[[netbox.dcim.manufacturers]] cisco = { name = "cisco", slug = "cisco"} huawei = { name = "huawei", slug = "huawei"}1.2.3.定义 device-types。
复制[[netbox.dcim.device-types]] # huawei CE6820-48S6CQ = { manufacturer = { name = "huawei"}, model = "CE6820-48S6CQ", slug = "CE6820-48S6CQ"} WS-C3750X-48T-S = { manufacturer = { name = "cisco"}, model = "WS-C3750X-48T-S", slug = "WS-C3750X-48T-S"}1.2.3.4.定义堆叠组 。
复制[[netbox.dcim.virtual_chassis]] "堆叠01" = { name = "堆叠01"}1.2.定义 devices。
复制[[netbox.dcim.devices]] "device01" = { name = "device01", site = { "name" = "site01" }, tenant = { name = "公司1" }, device_type = { model = "CE6820-48S6CQ" }, role = { name = "核心交换机" }, rack = { name = "一期100模块_A01"}, face = "front", position = 41, virtual_chassis = { name = "堆叠01"}, vc_position = 1, vc_priority = 120}1.2.定义 interface 。
复制[[netbox.dcim.interfaces]] # 链路聚合组 "device01-Eth-Trunk1" = { device = { name = "device01"}, name = "Eth-Trunk1", type = "lag"} # 普通接口 "device01_10GE1/0/1" = { device = { name = "device01"}, name = "10GE1/0/1", type = "10gbase-x-sfpp", lag = "Eth-Trunk1"}1.2.3.4.5.定义 cables 。
复制[[netbox.dcim.cables]] cables_001 = { type = "smf", a_terminations = { device = "device01", name = "10GE1/0/1"}, b_terminations = { device = "device02", name = "GigabitEthernet0/0/7"}} cables_002 = { type = "smf", a_terminations = { device = "device01", name = "10GE2/0/1"}, b_terminations = { device = "device02", name = "GigabitEthernet0/0/6"}}1.2.3.定义 prefixes 。
复制[[netbox.ipam.prefixes]] "192.168.0.0/16" = { prefix = "192.168.0.0/16", "status" = "active", site = { name = "site01"}} "192.168.100.0/24" = { prefix = "192.168.100.0/24", "status" = "active", site = { name = "site02"}, description = "wifi"}1.2.3.定义 ip-addresses 。
复制[[netbox.ipam.ip-addresses]] # BGP "200.1.1.1/32" = { address = "200.1.1.1/32" , tenant = { name = "公司1"} } "200.1.1.2/32" = { address = "200.1.1.2/32" , tenant = { name = "公司2"} }1.2.3.4.定义 ip-ranges 。
复制[[netbox.ipam.ip-ranges]] "200.1.1.1_200.1.1.10" = { start_address = "200.1.1.1/32", end_address = "200.1.1.10/32", tenant = { name = "客户01" }}1.2. 3 、编写代码在使用 netbox 的 rest api 时,发现有部分 API 的 POST 请求无法更新,未找到具体的原因,高防服务器所以推荐使用 pynetbox 模块,使用很方便 。
读取 toml 配置可以使用 toml 模块 ,加载后是字典格式,使用很方便。
导入模块并做初始化。
复制import os import pynetbox import toml config = toml.load(config.toml) NETBOX_URL = "http://x.x.x.x:8000" # 可通过环境变量获取 API_TOKEN = os.getenv(NETBOX_API_TOKEN) nb = pynetbox.api(NETBOX_URL, token=API_TOKEN)1.2.3.4.5.6.7.8.9.创建 :
复制# 创建 sites = config[netbox][dcim][sites] for site in config[netbox][dcim][sites]: for values in site.values(): nb.dcim.sites.create(**values) # 更新 # 更新时需要先获取 data_id,并传入到待更新的数据内 data_id = nb.dcim.sites.get(name="site01").id sites[id] = data_id nb.dcim.sites.update(**sites)1.2.3.4.5.6.7.8.9.10.11.12.查询:
复制devices = nb.dcim.devices.all() for device in devices: print(device.name)1.2.3.特殊情况处理。
有些字段,例如 regions 、cables 是存在关联关系的。
例如 regions 中有时需要写 parent 字段 ,就像武汉的 parent 是湖北。
我们在配置文件中是这么定义的。
复制wh = { name = "武汉", slug = wh, parent = "湖北"}1.但是 pynetbox 在创建时,要求把 parent 转换为 id,所以就需要先做一层查询。
复制parent_id = nb.dcim.regions.get(name=detail[parent]) # parent_id 放入待更新的 region 字典内 regions_value[parent] = parent_id nb.dcim.regions.create(**regions_value)1.2.3.4.同样的,cables 也可以这么做。
五、数字科技峰会
NetBox 的优点如下:
提供了一个灵活且高度可定制的数据模型 ,支持管理设备、IP 地址、机架等多个基础设施元素,且易于扩展API 功能非常完善,几乎可以做所有的 Web 能操作的配置开源且免费用户页面比较直观 ,例如机柜立面图IPAM 功能比较好用,可以跟踪和管理 IP 地址空间 ,避免 IP 地址冲突可以管理设备端口与线缆 ,解决使用 Excel 表时无法管理端口表的问题缺点如下 :
功能集中在基础设施和网络相关的 ,如果已有其他的 CMDB ,在使用上会有割裂的情况,需要做一定的开发在大规模环境中,部署和维护 NetBox 可能比较复杂 ,特别是在高可用性或多集群的场景下总的来说 ,NetBox 还是一个很强大的功能,适合网络工程师或基础架构工程师进行机柜 、设备 、IP 地址 、网络拓扑的管理,如果能对其进行深入开发 ,还是可以把数据中心的设备理的很清楚的。
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“商站动力”。http://www.noorid.com/html/897a9099012.html
相关文章
当心成本陷阱,这可能会给宝贵的网络安全预算带来压力
系统运维最近的数据描绘了一幅与网络安全预算有关的相互矛盾的图景。一些研究表明,随着CISO着眼于下一次支出狂潮,预算正在健康增长。其他研究表明,尽管之前获得批准,但安全预算正在收紧,甚至被大幅削减,这阻碍了安 ...
【系统运维】
阅读更多安卓手机无法安装软件怎么办
系统运维很多使用安卓手机的朋友表示,有时候下载的软件安装提示安装失败,遇到这种情况很头疼。针对这个问题,网侠小编为大家分析出现问题的原因,按照本文教程一定可以完美解决这个问题。无法安装软件怎么解决?出现软件无 ...
【系统运维】
阅读更多我来贷审核要多久 我来贷审核放款多久到账?
系统运维我来贷的正常审核时效是工作日24个小时。如遇节假日或活动期间,审核处理速度可能会有所延缓,敬请谅解并耐心等待,如有疑问请致电客服热线。我来贷放款多久到账?答:当日14点前放款,2小时内到账;当日14点 ...
【系统运维】
阅读更多