Nautobot SSoT Infoblox
项目描述
此存储库中的代码已迁移到Nautobot SSoT 仓库,作为集成 - 在SSoT 文档中了解更多相关信息!截至2023年8月,此仓库已被冻结 - 所有关于此集成的开发、问题、讨论都将在Nautobot SSoT 仓库中进行。
Nautobot SSoT Infoblox
使用Nautobot SSoT框架,Infoblox的SSoT插件允许在Infoblox和Nautobot之间同步IP网络和VLAN数据。
安装
此插件作为PyPi中的Python包提供,可以使用pip进行安装。
pip install nautobot-ssot-infoblox
此插件与Nautobot 1.2.0及以上版本兼容
为确保在未来的升级过程中自动重新安装Nautobot SSoT Infoblox,请在Nautobot根目录中创建一个名为local_requirements.txt
的文件(如果尚不存在),并列出nautobot-ssot-infoblox
包
# echo nautobot-ssot-infoblox >> local_requirements.txt
安装后,需要在您的nautobot_config.py
中启用此插件
# In your nautobot_config.py
PLUGINS = ["nautobot_ssot", "nautobot_ssot_infoblox"]
请参阅下面的配置设置部分。
配置
设置 | 默认值 | 描述 |
---|---|---|
NAUTOBOT_INFOBLOX_URL | N/A | 要同步的Infoblox实例的URL。 |
NAUTOBOT_INFOBLOX_USERNAME | N/A | 用于验证Infoblox的用户名。 |
NAUTOBOT_INFOBLOX_PASSWORD | N/A | 用于验证Infoblox的密码。 |
NAUTOBOT_INFOBLOX_VERIFY_SSL | True | 在与 Infoblox 同步数据时切换 SSL 验证。 |
NAUTOBOT_INFOBLOX_WAPI_VERSION | v2.12 | Infoblox API 的版本。 |
enable_sync_to_infoblox | False | 将作业添加到从 Nautobot 同步数据到 Infoblox。 |
enable_rfc1918_network_containers | False | 将作业添加到将网络容器同步到 Nautobot(顶级聚合)。 |
default_status | active | 默认状态将分配给导入的对象。 |
infoblox_import_objects | True | 字典,包含每个导入对象的键和定义导入的值。 |
infoblox_import_subnets | N/A | 以 CIDR 字符串表示法表示的子网列表,用于筛选导入。 |
配置示例
PLUGINS_CONFIG = {
"nautobot_ssot": {
"hide_example_jobs": True, # defaults to False if unspecified
}
"nautobot_ssot_infoblox": {
"NAUTOBOT_INFOBLOX_URL": os.getenv("NAUTOBOT_INFOBLOX_URL", ""),
"NAUTOBOT_INFOBLOX_USERNAME": os.getenv("NAUTOBOT_INFOBLOX_USERNAME", ""),
"NAUTOBOT_INFOBLOX_PASSWORD": os.getenv("NAUTOBOT_INFOBLOX_PASSWORD", ""),
"NAUTOBOT_INFOBLOX_VERIFY_SSL": os.getenv("NAUTOBOT_INFOBLOX_VERIFY_SSL", "true"),
"NAUTOBOT_INFOBLOX_WAPI_VERSION": os.getenv("NAUTOBOT_INFOBLOX_WAPI_VERSION", "v2.12"),
"enable_sync_to_infoblox": False,
"enable_rfc1918_network_containers": False,
"default_status": "active",
"infoblox_import_objects": {
"vlan_views": os.getenv("NAUTOBOT_INFOBLOX_IMPORT_VLAN_VIEWS", True),
"vlans": os.getenv("NAUTOBOT_INFOBLOX_IMPORT_VLANS", True),
"subnets": os.getenv("NAUTOBOT_INFOBLOX_INFOBLOX_IMPORT_SUBNETS", True),
"ip_addresses": os.getenv("NAUTOBOT_INFOBLOX_IMPORT_IP_ADDRESSES", True),
},
"infoblox_import_subnets": ["10.46.128.0/18", "192.168.1.0/24"],
}
}
DiffSync 模型
以下是 Infoblox 内部对象与 Nautobot 内部对应对象之间的数据映射
Infoblox | Nautobot |
---|---|
网络 | 前缀 |
IP 地址 | IP 地址 |
VLAN | VLAN |
VLAN 视图 | VLAN 组 |
网络容器 | 聚合 |
扩展属性 | 自定义字段 |
注意 - 关于扩展属性的更多信息可以在项目文档中找到。
DiffSyncModel - 网络
DiffSyncModel - IPAddress
DiffSyncModel - 聚合
贡献
欢迎使用拉取请求,并自动构建和测试多个版本的 Python 和多个版本的 Nautobot 通过 GitHub Actions。
项目使用基于 docker-compose
的轻量级开发环境打包,以帮助项目本地开发并在 GitHub Actions 中运行测试。
项目遵循 Network to Code 软件开发指南,并利用
- 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_infoblox)python_ver
:用作任何构建 Docker 容器基础的 Python 版本(默认:3.6)local
:一个布尔标志,指示 invoke 任务是否应在主机上或在 Docker 容器内运行(默认:False,命令将在 Docker 容器中运行)compose_dir
:包含项目组合文件的目录的完整路径compose_files
:按顺序应用的组合文件列表(有关更多信息,请参阅多个组合文件)
使用 PyInvoke,可以通过几种方法覆盖这些配置选项。可能最简单的方法是简单地设置一个环境变量 INVOKE_NAUTOBOT_SSOT_INFOBLOX_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
文件,内容如下(你也可以先复制invoke.example.yml
到invoke.yml
并根据需要编辑)
---
nautobot_ssot_infoblox:
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_INFOBLOX_PYTHON_VER
和 INVOKE_NAUTOBOT_SSOT_INFOBLOX_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.
项目文档
项目文档是由 mkdocs 从位于 docs 文件夹中的文档生成的。你可以配置 readthedocs.io 指向你的仓库中的此文件夹。使用 invoke 命令在 http://localhost:8001 上启动一个托管文档的容器,当更改保存时,文档将自动重新加载。
问题
对于任何问题或评论,请首先查看 常见问题解答,然后欢迎访问 Network to Code Slack 频道(频道 #networktocode)。在此 处 注册。
屏幕截图
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源分发
构建分发
nautobot_ssot_infoblox-0.9.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 70fba032b92fece2cfa4093bcf9aaa4f3dce66ca96cb36950fe7bd562196dddb |
|
MD5 | 988978f2157a59f5503867efda4c93ca |
|
BLAKE2b-256 | a2a03fb0bc064ab180f1faa75615538ddac80e600a0099ba9b9be4a8184f2f85 |
nautobot_ssot_infoblox-0.9.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5c846487ccb287b9ed83861445d4e32eb2dc02d85c31816c6b73dcfd6654b325 |
|
MD5 | 7798a85090263caebbb90f766ff6a0ca |
|
BLAKE2b-256 | 791a6b38f92d7bb8d463cd247c522f966504071d765b50dab4580fb553b91213 |