跳转到主要内容

Nautobot Chatops Meraki

项目描述

Cisco Meraki ChatOps

使用Nautobot ChatOps基础框架,此Nautobot应用程序(插件)通过Slack、Webex Teams、MS Teams和Mattermost与Meraki门户直接通信来收集数据和执行基本更改,从而改变了IT组织支持Meraki基础设施的方式。

使用方法

命令设置

在Slack中添加一个名为/meraki的斜杠命令。有关在您的Slack频道中添加斜杠命令的说明,请参阅nautobot-chatops安装指南

根据您的安全需求,您可能需要调整Nautobot的访问权限

以下命令可用

  • /meraki get-organizations:收集所有Meraki组织。
  • /meraki get-admins [org-name]:基于组织名称返回管理员。
  • /meraki get-devices [org-name] [device-type]:从Meraki收集设备。
  • /meraki get-networks [org-name]:从Meraki收集网络。
  • /meraki get-switchports [org-name] [device-name]:从MS交换设备收集交换端口。
  • /meraki get-switchports-status [org-name] [device-name]:从MS交换设备收集交换端口状态。
  • /meraki get-firewall-performance [org-name] [device-name]:查询Meraki防火墙到设备性能。
  • /meraki get-network-ssids [org-name] [net-name]:查询给定网络的全部SSID。
  • /meraki get-camera-recent [org-name] [device-name]:查询Meraki最近相机分析。
  • /meraki get-clients [org-name] [device-name]:查询Meraki客户端列表。
  • /meraki get-lldp-cdp [org-name] [device-name]:查询Meraki LLDP或CDP邻居列表。
  • /meraki configure-basic-access-port [org-name] [device-name] [port-number] [enabled] [vlan] [port-desc]:配置带有描述、VLAN和状态的访问端口。
  • /meraki cycle-port [org-name] [device-name] [port-number]:在指定交换机上循环端口。

屏幕截图

运行 /meraki get-organizationsget-organizations的示例输出

运行 /meraki get-networksget-networks的示例输出

运行 /meraki get-switchports-statusget-networks的示例输出

由于输出被截断,以下为输出示例

Port   Enabled      Status         Errors       Warnings   Speed    Duplex    Usage (Kb)    Client Count    Traffic In
                                                                                                              (Kbps)
========================================================================================================================
1      True      Connected                                 1 Gbps   full     total: 46687   1              total: 4.3
                                                                             sent: 27405                   sent: 2.5
                                                                             recv: 19282                   recv: 1.8
2      True      Connected                                 1 Gbps   full     total: 10086   1              total: 1.0
                                                                             sent: 9481                    sent: 0.9
                                                                             recv: 605                     recv: 0.1
3      True      Disconnected   Port                                         total: 0       0              total: 0
                                disconnected                                 sent: 0                       sent: 0
                                                                             recv: 0                       recv: 0
4      True      Disconnected   Port                                         total: 0       0              total: 0
                                disconnected                                 sent: 0                       sent: 0
                                                                             recv: 0                       recv: 0

为了演示配置更新的示例。访问端口具有简单的配置功能。/meraki configure-basic-access-port

指定组织、交换机和端口ID。 config-port0的示例输出

填写端口特定配置。 config-port1的示例输出

配置的结果。 config-port2的示例输出

安装

此插件需要安装Nautobot ChatOps插件。请遵循此链接中的安装说明。

该插件可在PYPI中以Python包的形式提供,并可以使用pip进行安装

pip install git+https://github.com/networktocode-llc/nautobot-plugin-chatops-meraki.git

该插件与Nautobot 1.0.1及更高版本兼容

为确保Nautobot插件Chatops Meraki在未来升级期间自动重新安装,在Nautobot根目录中(与requirements.txt并列)创建一个名为local_requirements.txt的文件(如果尚不存在),并列出nautobot-plugin-chatops-meraki

# echo nautobot-plugin-chatops-meraki >> local_requirements.txt

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

# In your configuration.py
PLUGINS = ["nautobot_chatops", "nautobot_plugin_chatops_meraki"]

PLUGINS_CONFIG = {
  "nautobot_chatops": {
    # ADD SLACK/MS-TEAMS/WEBEX-TEAMS/MATTERMOST SETTINGS HERE
  }
}

要连接到Meraki仪表板API,您需要定义Meraki仪表板API密钥。请参阅[Meraki仪表板API文档](https://documentation.meraki.com/ General_Administration/Other_Topics/Cisco_Meraki_Dashboard_API)。

定义API密钥有两种选择。

第一种选择是在nautobot_config.py中定义API密钥

PLUGINS_CONFIG = {
    "nautobot_plugin_chatops_meraki": {
        "meraki_dashboard_api_key": <API KEY>
    },

注意:您可能希望从环境变量中读取API密钥,如下所示:os.environ.get("MERAKI_API_KEY")

另一种选择是设置环境变量

  • MERAKI_DASHBOARD_API_KEY:设置为仪表板API密钥。将此变量及其值添加到creds.env文件中。

贡献

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

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

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

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

开发环境

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

调用任务

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

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

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

本地诗歌开发环境

  1. development/creds.env.example复制到development/creds.env(此文件将由git和Docker忽略)
  2. development/creds.env中取消注释POSTGRES_HOSTREDIS_HOSTNAUTOBOT_ROOT变量
  3. 在仓库根目录创建一个包含以下内容的invoke.yml
---
nautobot_plugin_chatops_meraki:
  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 environmentutilitytesting

每个命令都可以通过invoke <command>执行。可以指定环境变量INVOKE_NAUTOBOT-PLUGIN-CHATOPS-MERAKI_PYTHON_VERINVOKE_NAUTOBOT-PLUGIN-CHATOPS-MERAKI_NAUTOBOT_VER以覆盖默认版本。每个命令都有自己的帮助信息invoke <command> --help

Docker dev环境

  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.

问题

如有任何问题或评论,请首先查看FAQ,并随时访问Network to Code slack频道(频道#networktocode)。在此注册。

项目详细信息


下载文件

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

源分布

nautobot-chatops-meraki-1.2.0.tar.gz (26.6 kB 查看哈希值)

上传时间

构建分布

nautobot_chatops_meraki-1.2.0-py3-none-any.whl (27.2 kB 查看哈希值)

上传时间 Python 3

由以下组织支持