跳转到主要内容

纳特博特聊天机器人阿瑞斯塔云视界集成

项目描述

阿瑞斯塔云视界聊天机器人

使用Nautobot ChatOps基础框架,此应用程序通过Slack、Webex Team、MS Teams和Mattermost,从阿瑞斯塔的云视界收集标签数据、设备配置、特定容器中的设备、任务日志、配置单元、设备的常见漏洞和暴露以及设备事件。

屏幕截图

cloudvision_get_active_events

cloudvision_get_configlet

cloudvision_get_device_cve

安装

此扩展作为PyPI中的Python包提供,可以使用pip安装

pip install nautobot-chatops-arista-cloudvision

首先,您必须更新Nautobot配置文件中的PLUGINS_CONFIG字典中的新条目。

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")
    },
    'nautobot_chatops_arista_cloudvision' : {
        'cvaas_token': os.environ.get("CVAAS_TOKEN"),
        'cvp_username': os.environ.get("CVP_USERNAME"),
        'cvp_password': os.environ.get("CVP_PASSWORD"),
        'cvp_host': os.environ.get("CVP_HOST"),
        'cvp_insecure': os.environ.get("CVP_INSECURE"),
        'on_prem': os.environ.get("ON_PREM")
    }
}

之后,您必须根据您是否使用CVaaS(云视界作为服务)或本地云视界更新环境变量。要更新Nautobot中的环境变量,请参阅我们的博客文章此处

对于CVAAS,必须设置以下环境变量。

  • CVAAS_TOKEN:从CVAAS服务帐户生成的令牌。该过程的文档可以在此处的第1.7节找到
  • CVAAS_URL:这是您的云视界-as-a-Service的URL。在设置此URL时,请确保包含www。未设置时,默认为www.arista.io

对于本地云视界实例,必须设置以下环境变量。

  • CVP_USERNAME: 用于认证到CloudVision的用户名。
  • CVP_PASSWORD: 配置用户名的密码。
  • CVP_HOST: 岛上CloudVision设备的IP地址或主机名。
  • CVP_INSECURE: 如果设置为True,则将下载设备证书并自动信任。否则,设备应具有有效的证书。
  • ON_PREM: 默认设置为False,如果使用CloudVision的岛上台式机实例,则必须将其更改为True

更新您的环境文件后,请重新启动nautobot和nautobot-worker。

$ sudo systemctl daemon-reload
$ sudo systemctl restart nautobot nautobot-worker

使用方法

命令设置

将名为/cloudvision的斜杠命令添加到Slack。有关将斜杠命令添加到您的Slack频道的说明,请参阅nautobot-chatops安装指南

以下命令可用:

  • get-devices-in-container [container-name]:检索分配给指定容器的所有设备。
  • get-configlet [configlet-name]:获取指定configlet的配置。
  • get-device-configuration [device-name]:获取指定设备的配置。
  • get-task-logs [task-id]:获取指定任务的日志。
  • get-applied-configlets [filter-type] [filter-value]:获取应用于指定容器或设备的configlet。
  • get-active-events [filter-type] [filter-value] [start-time] [end-time]:获取给定时间范围内的活动事件。过滤类型可以是按设备、类型或严重性过滤。过滤值基于过滤类型动态创建。开始时间接受ISO时间格式以及相对时间输入。例如:-2w-2d-2h分别表示回退两周、两天和两小时。
  • get-tags [device-name]:获取分配给设备的系统或用户标签。
  • get-device-cve [device-name]:获取指定设备的所有CVE。还可以指定all参数以获取每个设备的CVE计数。

贡献

欢迎pull请求,并通过TravisCI自动构建和测试多个版本的Python和多个版本的Nautobot。

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

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

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

开发环境

需要一个Slack工作区来在开发环境中进行测试。

开发环境可以使用两种方式。首先,如果您希望在Docker之外进行开发,可以使用本地poetry环境。其次,在Docker容器内。

调用任务

使用PyInvoke库根据环境提供一些辅助命令。有几个配置参数可以传递给PyInvoke以覆盖默认配置

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

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

本地 Poetry 开发环境

  1. development/creds.example.env 复制到 development/creds.env(此文件将由 git 和 docker 忽略)
  2. development/creds.env 中取消注释 POSTGRES_HOSTREDIS_HOSTNAUTOBOT_ROOT 变量
  3. 在仓库根目录创建一个包含以下内容的 invoke.yml
---
nautobot_chatops_arista_cloudvision:
  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 git+https://github.com/nautobot/nautobot@develop。在 @ 符号之后必须匹配一个分支或标签。

  1. 现在您可以根据Nautobot 文档中所述,像从 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 environmentutilitytesting

每个命令都可以通过 invoke <command> 执行。可以使用环境变量 INVOKE_NAUTOBOT_CHATOPS_PLUGIN_CLOUDVISION_PYTHON_VERINVOKE_NAUTOBOT_CHATOPS_PLUGIN_CLOUDVISION_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_chatops_arista_cloudvision-1.3.0.tar.gz (34.8 kB 查看哈希值)

上传时间 源代码

构建分发

由以下支持