网络运维管理 如何使用 SNMP 从网络硬件采集 Ansible facts
关关 2018-08-27 来源 : 阅读 1114 评论 0

摘要:本篇网络运维教程讲解了如何使用 SNMP 从网络硬件采集 Ansible facts,希望阅读本篇文章以后大家有所收获,帮助大家对网络运维的理解更加深入。

本篇网络运维教程讲解了如何使用 SNMP 从网络硬件采集 Ansible facts,希望阅读本篇文章以后大家有所收获,帮助大家对网络运维的理解更加深入。

一个 Ansible SNMP 模块

当我们需要管理网络硬件的时候,但是大部分的网络硬件是不支持安装客户端或者是允许 Python 脚本的,所以我们就需要使用 SNMP 来收集网络硬件的信息。本文就是讲解结合 Ansible 来采集网络硬件的信息,作者自己使用 Python 写了一个 SNMP 的采集模块。

下面是两个你可以在一个 playbook 中设置的任务的例子:

# Gather facts with SNMP version 2

- snmp_facts: host={{ inventory_hostname }} version=2c community=public

 Gather facts using SNMP version 3

- snmp_facts:

host={{ inventory_hostname }}

version=v3

level=authPriv

integrity=sha

privacy=aes

username=snmp-user

authkey=abc12345

privkey=def6789

该模块要求 pysnmp 安装在你的 Ansible 服务器上。为了使用这个模块你可以添加它的目录到 $ANSIBLE_LIBRARY 变量,或者是为这个模块在当前的 library 目录创建一个子目录,通常是 /usr/share/ansible。

使用这些 facts

你或许会想:“这实际没有做任何事情!”这是正确的。这个模块是一个收集模块,并且仅仅从你的网络硬件收集信息。其他模块将被需要利用这些使用 snmp_facts 收集的信息。比如你可以在 playbooks 中使用这些 facts 与 Jason Edelman 已经做的工具一起工作。另外一个选择就是同 Ansible 模块系统一起使用这些信息,为了构建和修改配置文件。

如果你使用 ansible / ansible-playbook 的详细选项 -v,你将看到从每台主机采集到的信息。

什么能被采集

在该模块的第一版本我采集了:

· sysDescr – System Description

· sysObjectId – System Object ID, uniquely identifies the device class

· sysUpTime – Basic counter (just in seconds in this version)

· sysContact – SNMP Contact

· sysName – System Name

· sysLocation – SNMP Location

· All IPv4 addresses

· Interfaces – Name, Description, Speed, Physical address, admin and operational status

snmp_facts 的未来计划

有很多东西可以通过 SNMP 采集到 Ansible facts。仅举几件事情,我们有 CDP 或 LLDP 的邻居信息,路由表,NAT 设置,OSPF 邻居,IPv6 地址,mac 地址表,VRF 信息等等。因为对于每个硬件类型来说 sysobjectid 是唯一的,未来的一个选项可能就是首先运行一个集合仅仅只获取基本的信息,然后在一个 playbook 通过一个查找函数传递 sysobjectid 给 Jinja 模板,为了取回设备类别。这样将有可能运行其他集合,但只针对特定设备。比如你想对你所有的交换机来使用这个收集 LLDP 信息,但是你有一些 Cisco 交换机和一些华为交换机。问题就是华为不使用开放的 LLDP-MIB,但是使用 HUAWEI-LLDP-MIB 代替。假设对于 lldp 我们有一个模块选项,它通过 true/false/huawei 选项来确定是否是华为设备。这里你可以手工的组织你的在两个组和两个任务。或者你可以第一次运行一个收集任务来获取 sysobjectid,做一个查询来获取设备类别。设备类别将被注册到一个变量,你可以在以下的任务中动态使用。

有需求的可以通过 fork 他这个模块然后根据自己的业务需求来改动,会 Python 和 Ansible 就行。

比如我们可以通过这个模块然后格式化下数据存进数据库,然后定时取出来信息对比,同时版本库管理问题,当你做一个网络变更的时候,可以新旧版本对比,看自己变更了哪些东西,如果出错回滚也方便,一键回滚。

 

本文由职坐标整理并发布,了解更多内容,请关注职坐标系统运维网络管理频道!

本文由 @关关 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程