【Python自动化运维之路】路径盘点

2,120 阅读7分钟

其实大家更多的关心的都是,看完作者的文章能学到什么,可以做什么东西出来,或者说目前正遇到一个实际的需求,需要点一下相关的技能树,那么我这里就整体介绍一下大家能从我这里学到什么。

路径的选择

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

  • 但是有一部分读者朋友想寻求职业发展的突破,计划从传统运维转型为自动化运维,或者一开始就计划从自动化运维开启职业生涯的朋友们,那么就需要经过一些更为详细和系统的学习。

路径的规划

那么对于自动化运维来说肯定首推的编程语言就是Python,不管是从Python的整个生态的丰富程度以及上手难度来讲,都是我们尝试自动化运维的最佳语言。但网上对于Python语言的教程一抓一大把,我为什么还要在这里去讲解呢?这其实等同于另一个问题:刚接触编程的人是否能通过看类似的教程快速上手Python?,或者通俗易懂的讲:是不是能看得懂?

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

自动化运维新手村

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

  • Python基本数据结构和操作

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

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

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

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

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

    • 番外:基本html和css讲解
    • 面试番外:计算机网络
  • 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性能优化

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

  • 前后端分离

    由于系统功能的丰富,由原先的前后端不分离的系统,拆分为前后端分离的应用。

  • Vue前端讲解

    使用Vue作为系统的前端框架,讲解Vue的实际上手操作和更多前端的知识。

自动化运维高级村

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

  • Celery分时任务队列

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

  • Flink处理

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

  • Rsyslog - Kafka - Consumer- MySQL

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

    • 番外: Kafka中间件
  • ELK, Rsyslog - Kafkf - LogStash - ElasticSearch - Kibana

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

  • 告警通知,屏蔽,抑制

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

  • 任务编排

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

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

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

路径的总结

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


欢迎大家添加我的个人公众号【Python玩转自动化运维】加入读者交流群,获取更多干货内容

e88b07fbe8e0b714ed31558348df0981.jpg