路径的选择

对于正在从事运维工作,但工作中遇到了一些自动化的需求的朋友,那么这里本人并不提倡大家去构建整个的自动化运维体系,一个是没有必要,另一个是这也可能会消耗相当大的精力,所以我们就暂时只点与自己实际工作相关的技能即可,全部的技能树如下图所示:

路径的规划

一、【自动化运维新手村

那么对于自动化运维来说肯定首推的编程语言就是Python。

但网上对于Python语言的教程一抓一大把,我为什么还要在这里去讲解呢?这其实等同于另一个问题:刚接触编程的人是否能通过看类似的教程快速上手Python? 或者通俗易懂的讲:是不是能看得懂?

大部分从事运维工作的朋友可能都没有编程经验,也没有系统的学习过计算机底层原理,所以对于标准式的教程就会感觉,好像会了,但又没有全会;好像会了,但又不会用,所以我根据自己的学习方法再加上身边运维朋友们的学习经历,通过一些生动的例子和实际的场景来让大家快速的上手Python这门语言,并且能直接运用于实际工作中。

新手村的内容主要是为大家搭建一个简易的CMDB(资产管理),这也符合很多运维朋友的实际需求场景,比如想要做一个小功能,可以提供给其他人使用。除此之外也会对其中涉及到的部分知识点进行详细的深入挖掘,呈现在番外篇中,让对其感兴趣的读者朋友去更多的了解。

  • Python基本数据结构和操作

将CMDB的增删改查与Python数据结构相结合,将枯燥的基础知识进行深入浅出的讲解

  • 番外:数据结构的详解
  • 番外:字符串的详解
  • 番外:数组的详解
  • 番外:字典的详解
  • 面试番外:算法
  • Python函数与对象

将如何构建CMDB的函数与对象逐步拆解

  • 番外:深入了解面向对象
  • 番外:设计模式简介
  • Flask Web框架

将对CMDB的操作与Web框架相结合,通过API的方式对CMDB进行操作

  • 面试番外:计算机网络
  • MySQL数据库

将CMDB存储到数据库中,对其进行的增删改查从对文件读写转移到对数据库进行操作

  • 番外:MongoDB数据库
  • 面试番外:数据库
  • Linux部署应用

将应用部署在Linux系统上稳定的运行

  • 面试番外:操作系统

二、【自动化运维初级村

其实初级村的内容顺序的设计和新手村是类似的,但这一部分所运用的Python知识就会稍微深入,所以建议已经对Python有一定了解的朋友,可以跳过新手村直接看初级村的内容,因为初级村会是更多运维朋友们经常遇到的需求场景,也是做自动化运必须要走的路。

  • paramiko和netmiko

两者的使用方式及优劣

  • Python 正则解析

将通过SSH收集回来的各种信息进行正则解析

  • 番外:text-fsm解析
  • Python snmp

如何使用Python调用SNMP采集指令,并讲解OID使用方式

  • NetConf

如何通过NetConf对网络设备进行操作

  • Crontab并回调CMDB

如何设置定时执行SSH任务进行定期巡检,并更新回写CMDB

  • 番外:Python scheduler
  • Flask Web框架

将SSH和NetConf与Web框架相结合,通过API方式或前端调用其执行

三、【自动化运维中级村

中级村与初级村最大的不同就是,会从简单需求应用的完成,转变为更为复杂架构的设计与实现,以及能够支撑更大型运维的场景。

  • Celery任务队列

如何使用任务队列异步处理大量的SSH或NetConf执行操作

  • 番外:Redis数据库
  • 番外:RabbitMQ中间件
  • Rsyslog日志采集

通过Rsyslog收集设备日志并存储进行展示和查询。

  • Mysql性能优化

支持更大数据量的存储和查询,进行数据库的优化,分库和分表

  • ELK, Rsyslog - Kafkf - LogStash - ElasticSearch - Kibana

使用ELK套件对日志进行存储及展示

  • 前后端分离

由于系统功能的丰富,需要实现前后端分离的应用。

四、【自动化运维高级村

如果想要做一个完整的自动化运维系统,就必然需要有相应完善的自动化运维的理念和方法论,所以高级村会设计到更多关于自动化运维的理念介绍,以及更为复杂和适应更大型企业的自动化运维系统。

  • Celery分时任务队列

使用Celery任务队列,将SNMP大量采集任务或SSH变更任务根据频率发布在不同的队列中进行高效采集

  • Flink处理

使用Flink对SNMP采集的数据进行清洗并存储

  • Rsyslog - Kafka - Consumer- MySQL

如何将设备上报的日志进行收集解析,并通过Kafka中间件削峰,并进行存储

  • 番外: Kafka中间件
  • 告警通知,屏蔽,抑制

如何设置告警的通知,屏蔽和抑制机制

  • 任务编排

通过白屏方式将变更步骤注册为执行算子,并进行编排后下发

  • 基于意图的分组配置下发

将设备根据角色分组,并设置基于意图的模板命令,使用SSH或NetConf方式与其结合对网络设备进行变更或查询操作

路径的总结

上述的路径梳理是一个目前我能给到大家的较为系统的自动化运维方面的实践,在更新的过程中,我可能会根据读者的需要或者平时的思考总结对内容进行更新迭代,所以说路径并不是固定的,它只是一个学习的方向,并且学习的过程必然是会有阻碍和困难的,希望大家都能有坚定的决心克服一个个的难点,当然也会提供给大家学习交流的群组,供大家互相探讨,互相进步,也欢迎大家有什么疑问都找我咨询。最后期待大家都能拿到属于自己的结果。