
后端网络数据建模【免费下载链接】netboxThe premier source of truth powering network automation. Open source under Apache 2. Try NetBox Cloud free: https://netboxlabs.com/products/free-netbox-cloud/项目地址https://gitcode.com/gh_mirrors/ne/netbox点击查看免费下载NetBox 的插件机制允许以打包 Django 应用的形式为系统补充核心之外的自定义功能如新增数据模型、URL 视图、导航菜单与模板扩展而本指南聚焦其最关键的落地环节——插件安装与启用流程。通过本文你将掌握在生产环境中通过 PyPI 或源码树安装插件包、在configuration.py中启用并配置插件、执行数据库迁移与静态文件收集以及正确重启 WSGI 与 RQ 服务的完整操作链并了解 NetBox 底层如何校验、注册并加载这些插件。!!! warning 下文描述的是安装与配置 NetBox 插件的通用流程但每个插件各不相同可能还需要额外的步骤或对下述步骤的修改。在尝试安装某个具体插件之前务必先阅读该插件的文档。前置概念插件是什么插件是打包的 Django 应用可随 NetBox 一起安装用于提供核心应用不具备的自定义功能。插件可以引入自己的模型和视图但不能干扰现有组件。NetBox 的插件架构支持以下能力新增数据模型插件可以引入一个或多个模型来保存数据模型本质上对应 SQL 数据库中的表。新增 URL 与视图插件可在/plugins根路径下注册 URL为用户提供可浏览的页面视图。向既有模型模板注入内容通过模板内容类在核心 NetBox 模型的视图内注入自定义 HTML可出现在页面左侧、右侧或底部。新增导航菜单项每个插件可注册导航菜单中的新链接每条链接可带一组按钮类似内置导航项。新增自定义中间件插件可注册自定义 Django 中间件。声明配置参数每个插件可定义必填、可选及默认配置参数命名空间独立用户在configuration.py的PLUGINS_CONFIG中提供取值。按 NetBox 版本限制安装插件可声明与之兼容的 NetBox 最低/最高版本。相应地出于策略或技术限制插件与 NetBox 核心的交互受到约束插件不得修改核心模型、在/plugins根路径之外注册 URL、覆盖核心模板、修改核心设置或禁用核心组件。本文档docs/plugins/installation.md即为上述插件体系的操作入口完整流程分为六步安装 Python 包 → 启用插件 → 配置插件 → 运行数据库迁移 → 收集静态文件 → 重启 WSGI 服务。第一步安装插件 Python 包插件通过 PyPI 发布时通常使用pip命令行工具安装。务必在 NetBox 的虚拟环境中安装插件。生产环境推荐方式local_requirements.txt 升级脚本对于生产安装推荐将插件包追加到/opt/netbox/local_requirements.txt然后运行 NetBox 的升级脚本$ sudo sh -c echo package /opt/netbox/local_requirements.txt $ sudo /opt/netbox/upgrade.sh这种方式将插件纳入 NetBox 标准的安装与升级流程。从仓库根目录的 upgrade.sh 可以看到脚本会重建虚拟环境删除旧venv并创建新环境、安装requirements.txt中的核心依赖然后检查local_requirements.txt是否为非空文件并安装其中的本地依赖见 upgrade.sh。因此把插件写进local_requirements.txt可以确保虚拟环境被重建时插件会被重新安装。手动安装与权限问题向 NetBox 虚拟环境安装包需要对目标目录有写权限。对于/opt/netbox下的安装普通用户通常没有写权限——激活虚拟环境并不会改变文件权限因此直接执行pip install可能报Permission denied。如果需要手动安装可采用以下两种方式之一。方式一先切换到 root shell再激活虚拟环境$ sudo -i # source /opt/netbox/venv/bin/activate (venv) # pip install package方式二直接调用虚拟环境中的 Python 可执行文件来运行 pip$ sudo /opt/netbox/venv/bin/python3 -m pip install package上述示例中$表示普通用户 shell#表示 root shell。非 PyPI 包的安装未发布到 PyPI 的包可能需要从本地源码树安装。进入包目录后用上述任一方式运行pip install .若为开发期可编辑安装则运行pip install --editable .。第二步启用插件在configuration.py中将插件名加入PLUGINS列表PLUGINS [ # ... plugin_name, ]仓库中的示例配置文件 netbox/netbox/configuration_example.py 给出了对应的默认形态# Enable installed plugins. Add the name of each plugin to the list. PLUGINS [] # Plugins configuration settings. These settings are used by various plugins that the user may have installed. # Each key in the dictionary is the name of an installed plugin and its value is a dictionary of settings. # PLUGINS_CONFIG { # my_plugin: { # foo: bar, # buzz: bazz # } # }从源码看PLUGINS中的每个条目会被逐一导入并校验见 netbox/netbox/settings.py尝试importlib.import_module(plugin_name)导入插件模块若模块不存在会抛出ImproperlyConfigured提示检查插件是否安装在正确的 Python 环境中从插件模块读取config变量必须指向PluginConfig子类调用plugin_config.validate(PLUGINS_CONFIG[plugin_name], RELEASE.version)做版本与配置校验校验失败仅发出警告并跳过该插件不阻断启动校验通过后插件名被追加到registry[plugins][installed]其django_apps、middleware、queues、events_pipeline等资源也会被注册到INSTALLED_APPS、MIDDLEWARE与 RQ 队列中见 netbox/netbox/settings.py。第三步配置插件如果插件需要配置在configuration.py的PLUGINS_CONFIG参数下定义。可用配置参数以插件README或其它文档为准PLUGINS_CONFIG { plugin_name: { foo: bar, buzz: bazz } }配置校验与默认值注入的底层实现NetBox 在加载插件时会调用PluginConfig.validate(user_config, netbox_version)做三项处理见 netbox/netbox/plugins/init.py版本约束若插件声明了min_version/max_version会与当前 NetBox 版本比较不满足则抛出IncompatiblePluginError在 settings.py 中被捕获并转为警告插件不加载必填配置校验插件声明的required_settings列表中的每一项都必须出现在用户的PLUGINS_CONFIG[plugin_name]中否则抛出ImproperlyConfigured提示 requires xxx to be present in the PLUGINS_CONFIG section of configuration.py默认值注入插件声明的default_settings字典中未被用户覆盖的键会被自动写入配置。此外若某插件在PLUGINS中启用但未在PLUGINS_CONFIG中给出任何配置NetBox 会先为其初始化空字典见 netbox/netbox/settings.py再执行上述校验。PluginConfig 的关键元数据插件的config变量通常指向一个继承netbox.plugins.PluginConfig的子类。以仓库测试插件 netbox/netbox/tests/dummy_plugin/init.py 为例其声明了name、verbose_name、version、base_url对应/plugins/dummy-plugin/路径、min_version/max_version、middleware、queues与events_pipeline等属性。PluginConfig基类见 netbox/netbox/plugins/init.py还支持author、author_email、description、default_settings、required_settings、django_apps以及search_indexes、data_backends、event_rule_actions、graphql_schema、jinja_filters、menu、template_extensions、user_preferences等可选资源路径这些资源会在ready()阶段被自动发现并注册见 netbox/netbox/plugins/init.py。URL 注册机制插件启用后NetBox 会为每个已安装插件扫描urls与api.urls子模块并统一挂载到/plugins/base_url/路径下base_url未设置时使用插件label见 netbox/netbox/plugins/urls.py。这也解释了插件文档中所有插件 URL 均限制在/plugins根路径之下的约束。第四步运行数据库迁移如果插件引入了新的数据库模型需要执行其提供的 schema 迁移(venv) $ cd /opt/netbox/ (venv) $ python3 netbox/manage.py migrate!!! tip 即使插件不包含任何迁移文件运行migrate管理命令也没有问题。第五步收集静态文件插件可能打包图片或脚本等静态资源需要由 HTTP 前端直接提供。请用collectstatic管理命令将这些资源复制到静态根目录(venv) $ cd /opt/netbox/ (venv) $ python3 netbox/manage.py collectstatic第六步重启 WSGI 服务最后重启 WSGI 服务与 RQ 工作进程以加载新插件$ sudo systemctl restart netbox netbox-rq两种安装路径的取舍升级脚本 vs 手动步骤官方文档特别提醒如果你在启用并配置插件之后运行了/opt/netbox/upgrade.sh该脚本已经自动完成了数据库迁移与静态文件收集无需重复执行如果你运行脚本只是为了安装包、尚未启用插件则需继续按第四、五步手动迁移与收集。从 upgrade.sh 的源码可以看到脚本默认非--readonly模式会依次执行migrate、trace_paths --no-input、rebuild_config_context_cache、collectstatic --no-input、remove_stale_contenttypes --no-input、reindex --lazy、clearsessions等命令覆盖了插件所需的迁移与静态文件步骤。因此生产环境的标准做法是先把插件写入local_requirements.txt→ 在configuration.py中启用并配置 → 运行upgrade.sh→ 重启服务六步中实际需要手动执行的只有前三步与最后一步。常见问题排查要点Permission denied直接向虚拟环境pip install时权限不足。改用sudo /opt/netbox/venv/bin/python3 -m pip install package或先sudo -i再激活虚拟环境或走local_requirements.txtupgrade.sh的推荐路径。Unable to import plugin ...: Module not found插件模块未安装在 NetBox 当前使用的 Python 环境中请确认激活了正确的虚拟环境见 netbox/netbox/settings.py 抛出的提示。Plugin ... does not provide a config variable插件包的__init__.py中未定义指向PluginConfig子类的config变量见 netbox/netbox/settings.py。版本不兼容插件声明了min_version/max_version而当前 NetBox 版本不满足时插件不会被加载并产生警告需要升级/降级 NetBox 或更换兼容的插件版本。requires xxx to be present in the PLUGINS_CONFIG插件声明的必填配置缺失需在configuration.py的PLUGINS_CONFIG对应插件条目中补全。忘记重启服务迁移与静态文件完成后若未systemctl restart netbox netbox-rq插件相关视图或后台任务可能不会生效。延伸阅读docs/plugins/index.md插件架构的能力与限制总览新增模型、URL/视图、模板内容、导航菜单、中间件、配置参数、版本约束等。docs/plugins/development/从零开发插件模型、表单、视图、REST API、GraphQL、导航、搜索、权限、后台任务等专题。docs/configuration/plugins.mdPLUGINS、PLUGINS_CONFIG等配置项的说明。netbox/netbox/plugins/init.pyPluginConfig基类与插件资源注册的实现。netbox/netbox/settings.pyNetBox 启动时插件的导入、校验、注册与装配逻辑。upgrade.sh生产环境安装/升级脚本包含迁移与静态文件收集步骤。netbox/netbox/tests/test_plugins.py 与 netbox/netbox/tests/dummy_plugin/插件的测试用例与测试用示例插件可用来验证本文所述的加载与校验行为。赞分享后端网络数据建模【免费下载链接】netboxThe premier source of truth powering network automation. Open source under Apache 2. Try NetBox Cloud free: https://netboxlabs.com/products/free-netbox-cloud/项目地址https://gitcode.com/gh_mirrors/ne/netbox点击查看免费下载相关推荐Laravel Debugbar 安装与启用完整指南从 Composer 安装到环境配置Laravel Debugbar 安装与启用完整指南从 Composer 安装到环境配置 Laravel Debugbar 是集成 PHP Debug Bar开发工具后端pydeck-carto 安装指南从 pip/conda 安装到 Jupyter 环境配置的完整实践pydeck carto 安装指南从 pip/conda 安装到 Jupyter 环境配置的完整实践 本篇技术指南基于 deck.gl 仓库中 binding前端数据可视化3D渲染图形学零代码自动化革命用taskt彻底告别重复劳动零代码自动化革命用taskt彻底告别重复劳动 你是否每天都要花数小时处理Excel报表、整理文件、或者重复填写网页表单 是否曾经因为繁琐的重复工作而错过RPA工作流自动化桌面应用上一篇从OpenFlux学Go接口组合、函数回调与依赖注入的10个实战案例下一篇告别照片管理混乱LibrePhotos 2025版人脸识别语义搜索全攻略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考