作为ansible插件打包的网络发现和管理工具包
ndmtk的Python项目详细描述
网络发现和管理工具包(ndmtk)使ansible 传统网络和软件定义网络(SDN)的“工作” 管理层。
概述
网络管理的未来在于 智慧。任何启用网络的设备都可以生成 可按需连接到远程对等点,无需人工干预。这个 限制这种能力的是人工智能系统 看门人。没有持续的数据收集,人工智能是不可能的 分析、探索和建模。因此,未来的网络需要 执行上述任务的工具。
此工具包旨在完成 人工智能拼图。具体来说,工具包的设计目的是:
- 发现网络设备上的数据并捕获 可用数据
- 通过ssh、telnet、控制台或终端配置网络设备 服务器
- 通过命令行交互收集、分析和存储数据; 它执行数据分析,如有必要,它还执行 数据收集和/或设备配置任务。
这个工具包的目标读者是系统和网络工程师 设计师,以及研究人工智能的研究人员。
工具包以ansibe插件的形式交付。然而,它 能很好的配合厨师或其他的编曲工具。原因 Ansible成为一个框架的选择是其模块化。工具包 它本身是模块化的。它允许扩展现有的功能。为 例如,插件不会盲目地运行预定义的命令。相反, 它首先收集形成对 网络中特定设备的功能。一旦插件收到 数据,它运行它的算法,并确定是否有 是否需要任何附加命令来进一步收集数据。这个过程 继续,直到算法确定集合是 完成。
重要的是,一旦插件完成了它的任务,它就会产生许多 json、yaml和junit格式的报告。这些报告提供了 做了什么,收集的数据在哪里,以及这些数据是什么。
插件没有必需的参数和参数,因为 可用于各种操作系统的默认命令数,例如 Cisco Nexus OS、Arista EOS、Linux等。
开始
首先,用户使用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-fw01, ny-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
文档
请阅读位于Read the Docs的工具包文档,并查看 demo 包含示例配置文件的目录。