您现在的位置是:系统运维 >>正文
NetBox介绍和自动化管理配置
系统运维49人已围观
简介一、概览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.bziz.cn/news/786b8999124.html
相关文章
Canalys:2022 年第四季度,全球网络安全规模近 200 亿美元
系统运维Canalys最新数据显示,2022 年第四季度,全球网络安全技术的总支出仍然保持强劲,市场规模增长14.5%,达到 196 亿美元。据悉,这主要是由于渠道主导的强劲出货,弥补了直销出货的下降。根据数 ...
【系统运维】
阅读更多拜亚动力DT770耳机的音质及使用体验(颠覆你对音乐的感受,DT770的细节还原力给你不一样的听觉享受)
系统运维作为音乐爱好者,一款高质量的耳机对于我们来说至关重要。而拜亚动力DT770作为一款备受好评的耳机,其音质及使用体验备受瞩目。本文将深入探讨DT770耳机的音质表现和用户体验,并通过详细的描述带领读者一 ...
【系统运维】
阅读更多安卓手机钛备份恢復程序出现意外停止怎么回事
系统运维出现这个问题的原因也是有很多的,小编就有碰到过这个情况,当然解决方法也是不只一个,通过recovery的双清也是可以解决的,接下来就看看另一种方法。 这种方法需要用到终端模拟器,用户们自 ...
【系统运维】
阅读更多
热门文章
最新文章
友情链接
- 戴尔PowerFlex 4.0为客户的IT现代化之旅奠定了坚实的基础
- 数据中心领域的可持续性
- 戴尔Precision 7920塔式工作站让数据及时备份避免“曼德拉效应”
- 华硕主板重装系统教程(一步步教你如何重装系统,让华硕主板焕发新生)
- 全面评价新苹果6的性能与功能(探索苹果6的卓越表现与领先技术)
- 3G技术的运行状况及影响(探讨3G网络的发展现状、运行效果以及对用户的影响)
- 一键Ghost使用教程(快速学习如何使用一键Ghost软件进行系统备份和还原)
- 戴尔科技云平台扮演十分关键的角色
- 半导体行业2022上半年盘点:行业没有迎来拐点,仍在强势发展 亿华云网站建设企业服务器香港物理机源码库b2b信息平台云服务器