Nautobot SSoT IPFabric
项目描述
Nautobot SSoT IPFabric
一个提供简单方式在SSoT和IPFabric以及Nautobot之间同步数据的插件。通过利用DiffSync功能,确保两个平台之间的数据一致性,并允许用户充分利用两个平台,使用最新、同步的数据。
版本矩阵
以下是兼容性矩阵和运行此插件所需的最低版本
IP Fabric | Python | Nautobot | ssot | ssot-ipfabric | python-ipfabric | python-ipfabric-diagrams |
---|---|---|---|---|---|---|
4.4 | 3.7.1 | 1.1.0 | 1.0.1 | 0.10.0 | 0.11.0 | 1.2.7 |
5.0.1 | 3.7.1 | 1.2.0 | 1.0.1 | 1.0.0 | 5.0.11 | 5.0.2 |
6.0 | 3.7.1 | 1.4.0 | 1.2.0 | 2.0.0 | 6.0.9 | 6.0.2 |
构建状态
分支 | 状态 |
---|---|
main | |
develop |
文档
文档托管在Nautobot SSoT IP Fabric 文档上的 Github Pages。
安装
从 PyPI 安装插件
pip install nautobot-ssot-ipfabric
从仓库代码手动安装插件
git clone git@github.com:nautobot/nautobot-plugin-ssot-ipfabric.git
cd nautobot-plugin-ssot-ipfabric
pip install .
有关如何安装 Nautobot 插件的更详细说明,请参阅官方文档
环境变量
此插件依赖于用户提供的环境变量以与 IP Fabric 交互。
ipfabric_api_token
- IP Fabric的API令牌ipfabric_host
- IP Fabric URLnautobot_host
- Nautobot URL(此用于生成聊天机器人的url链接)ipfabric_ssl_verify
- IP Fabric API SSL验证ipfabric_timeout
- IP Fabric API超时
示例 PLUGINS_CONFIG
,在成功安装后更新到 nautobot_config.py
。聊天机器人配置是可选的,但如果您希望能够通过聊天机器人调用同步作业,则需要配置它。
PLUGINS = ["nautobot_ssot", "nautobot_ssot_ipfabric"]
PLUGINS_CONFIG = {
"nautobot_chatops": {
"enable_slack": True,
"slack_api_token": os.environ.get("SLACK_API_TOKEN"),
"slack_signing_secret": os.environ.get("SLACK_SIGNING_SECRET"),
"session_cache_timeout": 3600,
},
"nautobot_ssot_ipfabric": {
"ipfabric_api_token": os.environ.get("IPFABRIC_API_TOKEN"),
"ipfabric_host": os.environ.get("IPFABRIC_HOST"),
"nautobot_host": os.environ.get("NAUTOBOT_HOST"),
"ipfabric_ssl_verify": os.environ.get("IPFABRIC_SSL_VERIFY"),
"ipfabric_timeout": os.environ.get("IPFABRIC_TIMEOUT"),
},
"nautobot_ssot": {"hide_example_jobs": True},
"nautobot_chatops_ipfabric": {
"IPFABRIC_API_TOKEN": os.environ.get("IPFABRIC_API_TOKEN"),
"IPFABRIC_HOST": os.environ.get("IPFABRIC_HOST"),
},
}
聊天机器人
作为与IP Fabric的SSoT同步功能的一部分,此插件通过提供用户从聊天机器人命令(Slack)开始同步作业的能力,扩展了Nautobot插件聊天机器人IPFabric。
贡献
欢迎提交拉取请求,并通过GitHub Actions自动构建和测试,以应对Python和Nautobot的多个版本。
该项目包含一个基于docker-compose
的轻量级开发环境,以帮助项目的本地开发以及在GitHub Actions中运行测试。
该项目遵循网络到代码软件开发指南,并利用
- Black、Pylint、Bandit和pydocstyle进行Python代码审查和格式化。
- Django单元测试以确保插件正常运行。
开发环境
开发环境可以使用两种方式。首先,如果您希望在Docker之外进行开发,可以使用本地poetry环境,但需要注意使用Docker提供的外部服务(PostgreSQL和Redis)。其次,使用Docker和本地挂载启动所有服务,以便您可以本地开发,但Nautobot将启动在Docker容器中。
以下是一个快速入门指南,如果您已经熟悉提供的开发环境,但如果不熟悉,请阅读入门指南。
调用
使用PyInvoke库提供基于环境的辅助命令。有几个配置参数可以传递给PyInvoke以覆盖默认配置
nautobot_ver
:用作任何构建的Docker容器的Nautobot版本(默认:1.1.4)project_name
:默认的Docker Compose项目名称(默认:nautobot_ssot_ipfabric)python_ver
:用作任何构建的Docker容器的Python版本(默认:3.7)local
:一个布尔标志,表示是否应在主机上或Docker容器内运行invoke任务(默认:False,命令将在Docker容器中运行)compose_dir
:包含项目组合文件的目录的完整路径compose_files
:按顺序应用的组合文件列表(有关更多信息,请参阅多个组合文件)
使用PyInvoke
,可以使用几种方法覆盖这些配置选项。最简单的方法是设置环境变量(INVOKE_NAUTOBOT_SSOT_IPFABRIC_VARIABLE_NAME)
,其中VARIABLE_NAME
是要覆盖的变量名称。唯一的例外是compose_files
,因为它是一个列表,必须使用yaml文件覆盖。此目录中有一个示例invoke.yml
(invoke.example.yml
),可以作为起点使用。
本地Poetry开发环境
- 将
development/creds.example.env
复制到development/creds.env
(此文件将由Git和Docker忽略) - 在
development/creds.env
中取消注释POSTGRES_HOST
、REDIS_HOST
和NAUTOBOT_ROOT
变量 - 在仓库根目录创建一个包含以下内容的
invoke.yml
文件(您也可以cp invoke.example.yml invoke.yml
并按需编辑)
---
nautobot_ssot_ipfabric:
local: true
compose_files:
- "docker-compose.requirements.yml"
- 运行以下命令
poetry shell
poetry install --extras nautobot
export $(cat development/dev.env | xargs)
export $(cat development/creds.env | xargs)
invoke start && sleep 5
nautobot-server migrate
如果您想在 Nautobot 的最新 develop 分支上开发,请运行以下命令:
poetry add --optional git+https://github.com/nautobot/nautobot@develop
。在@
符号之后必须匹配一个分支或一个标签。
- 现在您可以像从Nautobot 文档中一样运行 nautobot-server 命令,例如启动开发服务器
nautobot-server runserver 0.0.0.0:8080 --insecure
Nautobot 服务器现在可以通过 http://localhost:8080 访问。
通常建议在单独的 shell 中启动 Nautobot 的 runserver 命令,这样您可以继续开发并单独管理 web 服务器。
Docker 开发环境
此项目由 Python Poetry 管理,并有一些设置开发环境的要求
安装 Poetry 和 Docker 后,您可以使用以下命令在隔离的 Python 虚拟环境中安装所有其他开发依赖项
poetry shell
poetry install
invoke start
Nautobot 服务器现在可以通过 http://localhost:8080 访问。
要停止或销毁开发环境,请使用以下选项。
- invoke stop - 停止容器,但保持所有底层系统完好无损
- invoke destroy - 停止并删除所有容器、卷等。(由于卷被删除,这将导致数据丢失)
CLI 辅助命令
该项目提供了一个基于 invoke 的 CLI 辅助程序,用于帮助设置开发环境。命令分为以下 3 个类别:dev environment
、utility
和 testing
。
每个命令都可以使用 invoke <command>
执行。可以指定环境变量 INVOKE_NAUTOBOT_SSOT_IPFABRIC_PYTHON_VER
和 INVOKE_NAUTOBOT_SSOT_IPFABRIC_NAUTOBOT_VER
来覆盖默认版本。每个命令也有自己的帮助信息 invoke <command> --help
Docker 开发环境
build Build all docker images.
debug Start Nautobot and its dependencies in debug mode.
destroy Destroy all containers and volumes.
restart Restart Nautobot and its dependencies.
start Start Nautobot and its dependencies in detached mode.
stop Stop Nautobot and its dependencies.
实用工具
cli Launch a bash shell inside the running Nautobot container.
create-user Create a new user in django (default: admin), will prompt for password.
makemigrations Run Make Migration in Django.
nbshell Launch a nbshell session.
shell-plus Launch a shell_plus session, which uses iPython and automatically imports all models.
测试
bandit Run bandit to validate basic static code security analysis.
black Run black to check that Python files adhere to its style standards.
flake8 This will run flake8 for the specified name and Python version.
pydocstyle Run pydocstyle to validate docstring formatting adheres to NTC defined standards.
pylint Run pylint code analysis.
tests Run all tests for this plugin.
unittest Run Django unit tests for the plugin.
项目文档
文档是使用 Sphinx、myst-paerser 和 sphinx-autoapi 自动生成的。最新的代码在 main
分支上,提供由 Github Pages 提供的文档。要在开发过程中本地构建文档,请执行以下命令。
sphinx-build -vvv -b html ./docs docs/public
cd docs/public
python -m http.server
现在您可以在本地通过 http://localhost:8000/
或开发环境所在服务器的 IP 地址访问文档。
问题
对于任何问题或评论,请首先查看 FAQ,并随时访问 Network to Code Slack 频道(频道 #networktocode)。在此处注册 这里
屏幕截图
主 SSoT IP Fabric 仪表板
同步详细信息
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源代码分发
构建版本
nautobot_ssot_ipfabric-2.0.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a8052086f85a349309193ed8a30b8bf4bacdcc8690cc41cc87b1e262b471f3df |
|
MD5 | 9ee867a0e1698d6de700ed07a5095d5b |
|
BLAKE2b-256 | ad4962eb23cff2baac2d752a838671b6dbce04efc2eb26e102d62d06918baef3 |
nautobot_ssot_ipfabric-2.0.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 663d4c12397fd2513bc72201b1fbd9f98f73438c4ea54fa319f172369226c00a |
|
MD5 | 7d3b1c9da0973191b698b89e7582698d |
|
BLAKE2b-256 | 08be52d45eb4f6286d3462ea9e4eca70d38d35140da865fbdc8bc3f6999b565c |