跳转到主要内容

Nautobot SSoT IPFabric

项目描述

Nautobot SSoT IPFabric

一个提供简单方式在SSoTIPFabric以及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 Build Status
develop Build Status

文档

文档托管在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 URL
  • nautobot_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

ssot-chatops-sync

贡献

欢迎提交拉取请求,并通过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.ymlinvoke.example.yml),可以作为起点使用。

本地Poetry开发环境

  1. development/creds.example.env复制到development/creds.env(此文件将由Git和Docker忽略)
  2. development/creds.env中取消注释POSTGRES_HOSTREDIS_HOSTNAUTOBOT_ROOT变量
  3. 在仓库根目录创建一个包含以下内容的invoke.yml文件(您也可以cp invoke.example.yml invoke.yml并按需编辑)
---
nautobot_ssot_ipfabric:
  local: true
  compose_files:
    - "docker-compose.requirements.yml"
  1. 运行以下命令
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。在 @ 符号之后必须匹配一个分支或一个标签。

  1. 现在您可以像从Nautobot 文档中一样运行 nautobot-server 命令,例如启动开发服务器
nautobot-server runserver 0.0.0.0:8080 --insecure

Nautobot 服务器现在可以通过 http://localhost:8080 访问。

通常建议在单独的 shell 中启动 Nautobot 的 runserver 命令,这样您可以继续开发并单独管理 web 服务器。

Docker 开发环境

此项目由 Python Poetry 管理,并有一些设置开发环境的要求

  1. 安装 Poetry,请参阅操作系统的 Poetry 文档
  2. 安装 Docker,请参阅操作系统的 Docker 文档

安装 Poetry 和 Docker 后,您可以使用以下命令在隔离的 Python 虚拟环境中安装所有其他开发依赖项

poetry shell
poetry install
invoke start

Nautobot 服务器现在可以通过 http://localhost:8080 访问。

要停止或销毁开发环境,请使用以下选项。

  • invoke stop - 停止容器,但保持所有底层系统完好无损
  • invoke destroy - 停止并删除所有容器、卷等。(由于卷被删除,这将导致数据丢失)

CLI 辅助命令

该项目提供了一个基于 invoke 的 CLI 辅助程序,用于帮助设置开发环境。命令分为以下 3 个类别:dev environmentutilitytesting

每个命令都可以使用 invoke <command> 执行。可以指定环境变量 INVOKE_NAUTOBOT_SSOT_IPFABRIC_PYTHON_VERINVOKE_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 仪表板 Dashboard

同步详细信息 Dashboard

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源代码分发

nautobot_ssot_ipfabric-2.0.2.tar.gz (54.1 kB 查看散列)

上传于

构建版本

nautobot_ssot_ipfabric-2.0.2-py3-none-any.whl (61.4 kB 查看哈希值)

上传于 Python 3

由以下组织支持