跳转到主要内容

Nautobot插件Chatops Cisco ACI

项目描述

Nautobot Cisco ACI Chatops插件

Nautobot Cisco ACI Chatops插件扩展了Nautobot Chatops框架,通过Slack、Webex、Microsoft Teams和Mattermost中的命令与Cisco APIC(应用程序策略基础设施控制器)交互。

屏幕截图

Slack

image

image

image

Webex

image

image

image

安装

该插件作为Python包在pypi中可用,可以使用pip进行安装

pip install nautobot-plugin-chatops-aci

安装后,需要在您的nautobot_config.py中启用该插件

# In your nautobot_config.py
PLUGINS = ["nautobot_chatops", "nautobot_plugin_chatops_aci"]

此外,将以下PLUGINS_CONFIG部分添加到nautobot_config.py中。

您只需添加以下片段中的部分,以支持您将使用的聊天平台(Slack、Webex等)。

# Also in nautobot_config.py
PLUGINS_CONFIG = {
    "nautobot_chatops": {
        # Slack
        "enable_slack": os.environ.get("ENABLE_SLACK", False),
        "slack_api_token": os.environ.get("SLACK_API_TOKEN"),
        "slack_signing_secret": os.environ.get("SLACK_SIGNING_SECRET"),
        "slack_slash_command_prefix": os.environ.get("SLACK_SLASH_COMMAND_PREFIX", "/"),
        # Webex
        "enable_webex": os.environ.get("ENABLE_WEBEX", False),
        "webex_token": os.environ.get("WEBEX_TOKEN"),
        "webex_signing_secret": os.environ.get("WEBEX_SIGNING_SECRET"),
        # Mattermost
        "enable_mattermost": os.environ.get("ENABLE_MATTERMOST", False),
        "mattermost_api_token": os.environ.get("MATTERMOST_API_TOKEN"),
        "mattermost_url": os.environ.get("MATTERMOST_URL"),
        # MS Teams
        "enable_ms_teams": os.environ.get("ENABLE_MS_TEAMS", False),
        "microsoft_app_id": os.environ.get("MICROSOFT_APP_ID"),
        "microsoft_app_password": os.environ.get("MICROSOFT_APP_PASSWORD"),
    },
    "nautobot_chatops_aci": {"aci_creds": {x: os.environ[x] for x in os.environ if "APIC" in x}},
}

上述aci_creds设置创建了一个Python字典,它导入以APIC为前缀的任何环境变量。以下环境变量用于定义每个APIC的主机名和凭证

export APIC_USERNAME_NTCAPIC="{{ APIC username }}"
export APIC_PASSWORD_NTCAPIC="{{ APIC password }}"
export APIC_URI_NTCAPIC="{{ https://apic_hostname }}"
export APIC_VERIFY_NTCAPIC="{{ Check SSL certificate (True or False) }}"

上述变量名中的文本NTCAPIC可以替换为您选择的标识符。执行命令时,它将显示在APIC选择对话框中,如下所示。

image

使用此语法,可以支持多个APIC。例如,要向选择列表添加另一个APIC,我们可以指定另一组凭证

export APIC_USERNAME_DEVNET="{{ APIC username }}"
export APIC_PASSWORD_DEVNET="{{ APIC password }}"
export APIC_URI_DEVNET="{{ https://apic_hostname }}"
export APIC_VERIFY_DEVNET="{{ Check SSL certificate (True or False) }}"

在执行聊天命令时,我们将看到一个包含ntcapicdevnet的选项对话框。

此外,使用聊天平台还需要以下环境变量。平台特定设置文档描述了如何获取每个聊天平台的环境变量中的令牌和密钥。

只需为您要使用的聊天平台创建以下环境变量。要使环境变量持久,请将其添加到运行Nautobot的用户的主目录下的.bash_profile文件中。

# Slack
export ENABLE_SLACK="true"
export SLACK_API_TOKEN="foobar"
export SLACK_SIGNING_SECRET="foobar"

# Webex
export ENABLE_WEBEX="true"
export WEBEX_TOKEN="foobar"
export WEBEX_SIGNING_SECRET="foobar"

# Mattermost
export ENABLE_MATTERMOST="false"
export MATTERMOST_API_TOKEN="foobar"
export MATTERMOST_URL="foobar"

# Microsoft Teams
export ENABLE_MS_TEAMS="false"
export MICROSOFT_APP_ID="foobar"
export MICROSOFT_APP_PASSWORD="foobar"

以Docker容器形式部署时,所有上述环境变量都应在development/creds.env文件中定义。在development文件夹中提供了一个示例凭证文件creds.env.example

用法

命令设置

将顶级命令aci添加到您正在使用的平台。请参阅平台特定设置部分的Nautobot Chatops 安装指南,以获取有关Slack、Microsoft Teams、WebEx和Mattermost的特定说明。

以下命令可用

命令 描述
get-tenants [apic] 显示在Cisco ACI中配置的租户。
get-aps [apic] [tenant] 显示在Cisco ACI中配置的应用配置文件。
get-epgs [apic] [tenant] [ap] 显示在Cisco ACI中配置的端点组(EPGs)。
get-epg-details [apic] [tenant] [ap] [epg] 显示Cisco ACI中端点组的详细信息。
get-vrfs [apic] [tenant] 显示在Cisco ACI中配置的vrf。
get-bds [apic] [tenant] 显示在Cisco ACI中配置的桥接域。
get-pending-nodes [apic] 显示在Cisco ACI中的未注册节点。
get-nodes [apic] 显示在Cisco ACI中的fabric节点。
get-controllers [apic] 显示在Cisco ACI中的APIC控制器。
get-interfaces [apic] [pod-id] [node-id] [state] 显示在Cisco ACI中指定节点上的接口。
register-node [apic] [serial-nbr] [node-id] [name] 在Cisco ACI中注册新的fabric节点。

|

贡献

欢迎提交拉取请求,并且将通过TravisCI自动构建和测试多个版本的Python和多个版本的Nautobot。

项目使用基于docker-compose的轻量级开发环境进行打包,以帮助项目的本地开发,并在TravisCI中运行测试。

项目遵循Network to Code软件开发指南,并利用

  • Black、Pylint、Bandit和pydocstyle进行Python代码审查和格式化。
  • Django单元测试以确保插件正常工作。

开发环境

开发环境可以有两种使用方式。首先,如果您希望在不使用Docker的情况下进行开发,则可以使用本地poetry环境。其次,在docker容器内。

调用任务

使用PyInvoke库提供一些基于环境的辅助命令。可以通过传递一些配置参数到PyInvoke来覆盖默认配置

  • nautobot_ver:用作构建任何docker容器的Nautobot版本(默认:最新版)
  • project_name:默认的docker compose项目名称(默认:nautobot-plugin-chatops-aci)
  • python_ver:用作构建任何docker容器的Python版本(默认:3.6)
  • local:一个布尔标志,指示是否在主机或docker容器中运行invoke任务(默认:False,命令将在docker容器中运行)
  • compose_dir:包含项目compose文件的目录的完整路径
  • compose_files:按顺序应用的 compose 文件列表(更多信息请参阅 多个 Compose 文件

使用 PyInvoke,可以通过以下几种方法覆盖这些配置选项:多种方法。可能最简单的方法是直接设置环境变量 INVOKE_NAUTOBOT-PLUGIN-CHATOPS-ACI_VARIABLE_NAME,其中 VARIABLE_NAME 是您要覆盖的变量名称。唯一的例外是 compose_files,因为它是一个列表,所以必须在 yaml 文件中覆盖。此目录中有一个示例 invoke.yml,可以用作起点。

本地 Poetry 开发环境

  1. development/creds.env.example 复制到 development/creds.env(此文件将由 git 和 docker 忽略)
  2. development/creds.env 中取消注释 POSTGRES_HOSTREDIS_HOSTNAUTOBOT_ROOT 变量
  3. 在存储库根目录创建一个包含以下内容的 invoke.yml
---
nautobot_plugin_chatops_aci:
  local: true
  compose_files:
    - "docker-compose.requirements.yml"
  1. 运行以下命令
poetry shell
poetry install
export $(cat development/dev.env | xargs)
export $(cat development/creds.env | xargs) 
  1. 现在您可以像从 Nautobot 文档 中那样运行 nautobot-server 命令,例如启动开发服务器
nautobot-server runserver 0.0.0.0:8080 --insecure

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

Docker 开发环境

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

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

一旦安装了 Poetry 和 Docker,您可以通过以下命令在隔离的 Python 虚拟环境中安装所有其他开发依赖项

poetry shell
poetry install
invoke start

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

CLI 辅助命令

该项目提供了一个基于 invoke 的 CLI 辅助工具,用于帮助设置开发环境。命令按以下 3 个类别列出:dev environment(开发环境)、utility(实用程序)和 testing(测试)。

每个命令都可以通过 invoke <command> 执行。可以指定环境变量 INVOKE_NAUTOBOT-PLUGIN-CHATOPS-ACI_PYTHON_VERINVOKE_NAUTOBOT-PLUGIN-CHATOPS-ACI_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.

测试

  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.

问题

对于任何问题或评论,请首先查看 常见问题解答,然后请随意访问 Network to Code Slack 频道(频道 #networktocode)。在此 注册。

项目详情


下载文件

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

源代码分发

nautobot-plugin-chatops-aci-1.0.0.tar.gz (91.5 kB 查看散列

上传时间 源代码

构建分发

nautobot_plugin_chatops_aci-1.0.0-py3-none-any.whl (92.0 kB 查看哈希值)

上传时间: Python 3

由以下提供支持