作为ansible插件打包的网络发现和管理工具包

ndmtk的Python项目详细描述


GitHub versionCircleCIPyPI versionDocumentation Status

网络发现和管理工具包(ndmtk)使ansible 传统网络和软件定义网络(SDN)的“工作” 管理层。

概述

网络管理的未来在于 智慧。任何启用网络的设备都可以生成 可按需连接到远程对等点,无需人工干预。这个 限制这种能力的是人工智能系统 看门人。没有持续的数据收集,人工智能是不可能的 分析、探索和建模。因此,未来的网络需要 执行上述任务的工具。

此工具包旨在完成 人工智能拼图。具体来说,工具包的设计目的是:

  • 发现网络设备上的数据并捕获 可用数据
  • 通过ssh、telnet、控制台或终端配置网络设备 服务器
  • 通过命令行交互收集、分析和存储数据; 它执行数据分析,如有必要,它还执行 数据收集和/或设备配置任务。

这个工具包的目标读者是系统和网络工程师 设计师,以及研究人工智能的研究人员。

工具包以ansibe插件的形式交付。然而,它 能很好的配合厨师或其他的编曲工具。原因 Ansible成为一个框架的选择是其模块化。工具包 它本身是模块化的。它允许扩展现有的功能。为 例如,插件不会盲目地运行预定义的命令。相反, 它首先收集形成对 网络中特定设备的功能。一旦插件收到 数据,它运行它的算法,并确定是否有 是否需要任何附加命令来进一步收集数据。这个过程 继续,直到算法确定集合是 完成。

重要的是,一旦插件完成了它的任务,它就会产生许多 json、yaml和junit格式的报告。这些报告提供了 做了什么,收集的数据在哪里,以及这些数据是什么。

插件没有必需的参数和参数,因为 可用于各种操作系统的默认命令数,例如 Cisco Nexus OS、Arista EOS、Linux等。

Back to Top


工作流程图

Plugin Workflow

Back to Top


开始

首先,用户使用pip

安装ndmtk
pip install ndmtk

其次,用户创建ansible playbook。 playbooks/collect_all.yml

---
- name: generic data collection
  hosts:
  - ny-fw01
  - ny-sw01
  - ny-sw02
  gather_facts: no
  tasks:
  - name: data collection from three network devices
    action: ndmtk output="/tmp/ndmtk-%Y%m%d%H%M%S" debug=no no_host_key_check=yes on_error=continue

上面的playbook从三个设备收集数据:ny-fw01ny-sw01,和ny-sw02

第三,用户必须创建主机文件:

controller ansible_connection=local

[test:children]
cisco-asa-firewalls
arista-eos-switches

[arista-eos-switches]
ny-sw01 os=arista_eos host_overwrite=localhost host_port=8224
ny-sw02 os=arista_eos host_overwrite=localhost host_port=8225

[cisco-asa-firewalls]
ny-fw01 os=cisco_asa host_overwrite=192.168.1.1

[all:vars]
ansible_connection=local

这些交换机是运行在虚拟机上的arista veos交换机。这个 防火墙是一个物理Cisco ASA 5505。

此外,用户必须在以下任一位置创建ansible配置文件:

  • .ansible.cfg在用户的主目录中,或
  • ansible.cfg在用户的当前目录中

配置文件包含以下指令:

[defaults]
inventory             = ./hosts
forks                 = 100
local_tmp             = $HOME/.ansible/tmp
retry_files_enabled   = True
retry_files_save_path = $HOME/.ansible/retries/
log_path              = $HOME/.ansible/log/ansible.log
transport             = local

第四,用户必须创建ansible vault~/.ansible.vault.yml和 根据ndmtk的文档构造它。那么,为了 方便用户将密码存储在 ~/.ansible.vault.key纯文本文件。

例如,.ansible.vault.key只有一行密码:

NX23nKz!

而保险库本身包含以下内容:

--
credentials:
- regex: ny-fw0[1-9]
  username: admin
  password: 'NX23nKz!'
  password_enable: '3nKz!NX2'
  priority: 1
  description: NY-FW01 password
- default: yes
  username: greenpau
  password: 'My#DefaultPass'
  password_enable: 'Enabled#By$Default'
  priority: 1
  description: my default password

工具包使用第一组凭据访问ny-fw01。 因为它的名称与该集中的正则表达式匹配。对于 使用witches,后者是默认密码。

在任何时候,用户都可以使用 以下命令:

ansible-vault edit ~/.ansible.vault.yml --vault-password ~/.ansible.vault.key
ansible-vault view ~/.ansible.vault.yml --vault-password ~/.ansible.vault.key

最后,用户运行剧本:

ansible-playbook playbooks/collect_all.yml

Back to Top


文档

请阅读位于Read the Docs的工具包文档,并查看 demo 包含示例配置文件的目录。

Back to Top


问题

请在Github Issues中打开问题并提问。

Back to Top


贡献

请用以下方式投稿 Guidelines

Back to Top


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java SOAP请求,创建主体   java如何将Logj4日志级别转换为JUL日志级别?   java为什么我可以将浮点传递给Double的构造函数?   java从特定的持久性Tibco EMS订阅中删除消息   java为什么会出现“xxx已定义”编译器错误?   如何在java中编写用于用户注册的web服务   java如何在不使用position的情况下打开不同的活动   java My数据库已经更新,但我的安卓 studio仍然没有更新,仍然显示以前获取的数据库   java缺少类型为Long的方法参数的URI模板变量“usuarioEntidade”   java从浏览器中删除jsessionid cookie,此时会话将失效   java解析XML仅获取注释和日期值   razor使用JAVA,如何解析。cshtml文件,并为该文件中现有的C#代码添加参数   java为什么返回空值?   javascript如何通过云函数触发firestore集合   java JFreeChart setRangeZeroBaseline可见   java Android ListView单击以创建新活动   正则表达式使用正则表达式来查找任何数字或重复的单词   Java邮件搜索和排序可减少电子邮件数量   在哪里配置EclipseJava编译器(javac)标志?   安卓将字符串转换为java。util。Java 8中的日期