SuperAPI AI 工具集

infrahub-converting-netbox-device-types

数据与分析

查看项目

更新于 10-16 03:11

技能介绍

用途:把 NetBox 设备类型 YAML(netbox-community/devicetype-library 格式,也可来自 NetBox Data Exchange / NDX)转换为 Infrahub 对象模板,即创建含全部端口的可复用蓝图。一个 NetBox 文件会拆成三类产物:厂商转为 OrganizationManufacturer 对象,model/part_number/u_height/weight 转为 DcimDeviceType 对象,interfaces 等组件列表转为 TemplateDcimDevice 及组件模板。模块类型从 module-types/ 目录单独输入,转换到 04_module_types.yml / 05_module_templates.yml。

主要能力:借助捆绑脚本 netbox_to_infrahub_templates.py 精确、可重复地批量转换(库中有数千设备类型),并生成覆盖报告说明哪些内容未转换。可选脚本 netbox_export_device_types.py 从运行中的 NetBox 通过 REST API 导出为库文件格式,支持 --in-use、--module-types 等参数。转换通过映射配置(mapping profile)绑定字段与属性,使用 OpsMill schema-library 时可直接用其内置映射;自定义 schema 可复制 _template.yml 填写。

使用方式:先确认目标 schema 中相关节点设置 generate_template: true,否则 Template* 类型不存在(OpsMill schema-library v2 起已在 base/dcim.yml 中启用 DcimDevice 的该选项)。再选择或编写映射配置,准备输入(克隆上游库或从 NetBox 导出),运行转换脚本:python "$SKILL/scripts/netbox_to_infrahub_templates.py" devicetype-library/device-types/Cisco/ --mapping ... --output-dir ./generated --report ./generated/coverage-report.md。查看覆盖率报告后按依赖顺序加载到分支:infrahubctl branch create netbox-import,再逐文件 infrahubctl object load "$file" --branch netbox-import。

适用场景与限制:适用于向新 Infrahub 实例导入厂商设备型号、转换少量设备类型、上游库或本地 schema 变更后重跑、构建映射配置。它不是 NetBox 与 Infrahub 的实时同步工具(同步应使用 infrahub-sync)。模块端口名含 {module} 占位符,需安装模块后才由生成器解析;若 schema 的 DcimModule 未设 generate_template: true,模块端口会被跳过。转换会拒绝具有相同 model 的设备类型;控制台端口通常只需调整映射配置而非改 schema。转换脚本与模块端口生成器的测试可用 uv run invoke test 运行。部分细节(如具体收费、平台支持)资料未提供。