原文来自:互联网运维杂谈

过分依赖是脚本,是运维非标准化的体现!脚本灾难,就是运维场景管理上直接依赖大量的脚本来完成事务。

做运维的同学都知道,脚本是一个必备技能,在每个JD的岗位中必然出现。在我们的日常运维过程中,脚本发挥作用的地方也比比皆是:系统管理的脚本;应用发布的脚本;网络管理的脚本;存储管理脚本等等,更复杂的场景也有用脚本封装来实现的都有。仿佛脚本成了运维的大杀器,特别是python语言起来之后,更是一发不可收拾。在某银行客户中遇到,他们运维积累了近两千个脚本,这真的是对的?

如果一个事情变得复杂不堪的时候,我便会质疑它是否是对的?这一点在我做产品的过程中,有深刻的体悟,回头得空体悟。

今天我们过分依赖脚本作为一种最初的操作入口,对各类对象进行操作,我形象的给他比喻为是过程编程的模式。在大部分客户中,由于自动化运维平台的缺失,脚本还处于混乱的管理之中,这种混乱表现在:无版本管理;无测试管理;无集中管理,还散乱在各个运维人员手中 。这种情况下,脚本的灾难不可避免。

随着这两年的自动化运维平台被不断接受,很多客户开始接受平台的管理模式,大家更接受了一种形态是——原子作业库和基于原子作业之上的调度编排。运维开始变一股脑往运维平台中写原子工具,然后通过运维工具来构建复杂场景的运维场景编排。这个地方尤其要注意:这种编排还是一种过程编排的模式。

在这种模式下,大家不知道注意到一个有意思的现象没?复杂的过程编排,存在大量的复杂参数传递,每一个工具都有入口参数和出口参数的设置,调度设置界面非常难以简化。

如果这么复杂,是不是设计上又是错的呢?那错的根源到底在哪儿?方式、方法或者是理念设计上就出现了错误。在这个机制之下,出于脚本安全的需要,我们有必要强化几个能力的管理:

  1. 版本的管理。让工具的修改有序进行,可以回溯,对比等等

  2. 工具的开放性管理。工具设置成公开和私有管理,确保工具使用的范围。

  3. 工具的审核管理。工具的每一次变更,必须通过审核才能入库。

  4. 工具在流程中的引用管理。调度流程是引用工具,当工具产生修改,不直接对流程产生影响。

最后一点,我要把具体的做法明确一下,就是流程引用的是工具的快照,确保工具发生修改,能够避免对流程带来影响。就如同在AppStore中应用更新,客户可以收到更新的通知,但不代表系统给你立即更新了。尤其注意!!!

这个时候我想说,引起脚本灾难的核心原因:非标准化的过程管理的思维严重,脚本便是最快的是想工具。

那到底如何解决?如何避免脚本依赖引起的脚本灾难?

首先我必须得说,大量不标准的IT对象存在,我们需要接受脚本存在的合理性,而我们必须要面向未来做出一些改变。如何更有效的管理脚本?在之前讲到的引入version control能力,版本化控制,还不够。我觉得更需要引入IT对象管理的概念,把所有的方法附着到对象上,让工具方法自动继承对象的属性,简化工具的参数管理。何为IT对象?从角色出发,所有行程IT场景管理的都可以称之为对象,比如说网络管理员管理的网络设备;系统管理员管理的OS;DBA管理的数据库等等,是一种业务逻辑世界的理解;应用看到的应用系统,应用组件等等。

对于任何对象,从技术的角度来设定的抽象逻辑是:

1、对象属性

是一个对象的描述,和面向对象一样,其中包含很多属性与对象的关系。拿主机做例子,

  1. 属性维度:固定资产编号,采购时间,过保时间;

  2. 关系维度:负责人,网卡、CPU、内存和IO

2、对象的方法

对象的方法就是我们平时的管理动作或者场景,比如说主机的重启,主机的启动/停止,主机的回收,主机的申请等等。这些动作比如对其状态和属性产生影响。

3、对象的状态

对象在服务支撑过程中,必然会产生一些状态信息,是一种运行健康状态的表达。

4、对象的事件

事件是一种状态变化产生的结果,比如说状态异常产生的简单事件,如告警,状态经过模型计算产生的复杂事件,比如说容量事件。当然还有一个维度是人工操作事件。

当然提到了IT对象管理能力,如何降低对象复杂度的表述?这就转换成一个IT对象标准化的课题了,是不是逻辑就简单了。对象的标准化是运维必须面临的课题,必须要直面。把IT对象复杂度降低,你的管理复杂度随之下降。

此时对服务编排就有更高的要求了,不限于过去简单的类流程引擎编排能力,需要把过程编排和对象编排(蓝图编排)合二为一。此时提到的蓝图编排方法,我还不提TOSCA规范,那个我依然今天对很多基础设施来说要求很高,毕竟支持TOSCA的基础设施也不多。请对你的流程编排引擎进行升级吧,让他支持对象编排。自定义对象管理库,把过程编排和对象编排的混合编排能力构建起来,从而满足不同业务管理的需要。

总结来说,避免脚本灾难的方式,必须从过程管理模式变成对象管理模式。以对象作为管理视角,为其构建管理方法(或者脚本或者代码),通过对象来收敛管理入口,避免运维人员直面脚本泛滥。同时基于复杂的场景能力,也起到收敛工具脚本编排的作用。

运维,请警惕脚本灾难!相关推荐

  1. linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...

    最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...

  2. linux运维自动化脚本,linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  3. zzlinux运维自动化shell脚本小工具

    from http://www.cnblogs.com/wang-li/p/5728461.html linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服 ...

  4. Python运维常用的脚本,提高工作效率就靠它了

    前言 用Python做运维的小伙伴肯定会进行重复的工作,这个时候脚本的重要性就体现出来了 一个好的脚本工具可以帮你省去很多重复的工作,创造更大的价值 下面小编就带你们看看Python运维最常用的脚本吧 ...

  5. linux 系统运维日常巡检脚本参考

    巡检是运维工程师日常必进行的一项重要工作, 配合部署的监控系统可以大大的提高工作效率, 轻松管理几十到几千台硬件服务器产品的运行情况. 也是公司业务稳定的重要保障.  巡检结果出现异常也能及时发现, ...

  6. 标杆徐linux云计算视频,标杆徐2018 Linux自动化运维系列④: Shell脚本自动化编程实战...

    2019年录制SHell新课地址 贴切企业脚本编写思路讲解,带你玩Shell脚本编程实战. 本套课程从实际项目案例出发,近100个Shell实例讲解,由浅入深,循序渐进,带你玩转Shell编程的方方面 ...

  7. 要学好linux运维请从排版画图开始

     只要一出手就必须是专业的.规范的!无论是技术.文档.画图,还是做人.做事,这是老男孩培训培养学生的重中之重,虽然不容易做到,但是只要我们努力,就可以无限接近目标,甩开竞争对手.. 老男孩在做给学生讲 ...

  8. 外派linux运维,请好好善待你身边的Linux运维工程师,因为他们...

    说到Linux运维工程师,相信很多人的脑海中都会浮现这些字眼:情商低.不浪漫.人呆.傻头傻脑的,找不到女朋友呃............ (最后这个不是我说的,不要来群殴我)其实不然,大部分Linux运 ...

  9. Linux运维:Shell脚本实现ssh免密登录远程服务器

    LInux系统日常运维过程中,经常需要在本地运行脚本执行对远程主机的命令,正常情况下,ssh登录远程服务器时会提示输入密码,这会影响到脚本的自动执行(因为shell脚本中没有自动填充密码的命令).有三 ...

  10. Nginx 五大常见应用场景,Linux运维请收藏~

    Nginx 是一个很强大的高性能 Web 和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx 是 Apache 服务不错的替代品.其特点是占有内存少,并发能力强,事实上 ngi ...

最新文章

  1. 从零开始机器学习比赛经验(bird分享)
  2. Jenkins+Github持续集成
  3. 【Android 逆向】Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )
  4. python分类算法报告_Python机器学习(1)——决策树分类算法
  5. 在asp.net中如何用javascript读取本地Xml中的数据到网页中的文本框?
  6. gpedit msc组策略面板 win10在哪里_windows10的组策略在哪
  7. 多路平衡查找树 --- B(B-)树
  8. linux 网络瘫痪,Linux内核发现TCP漏洞,小流量也能DoS瘫痪设备
  9. [我的成长:8期]一晃又半年了
  10. ajax请求携带tooken_9 HTMLJS等前端知识系列之Ajax post请求带有token向Django请求
  11. 谷歌大脑2017总结(Jeff Dean执笔,干货满满,值得收藏)
  12. hdoj_1711_Number Sequence
  13. paip.提升用户体验---WEB程序页面的手机及平板浏览器兼容支持
  14. Android游戏编程之从零开始pdf
  15. FreeCAD 扫掠空间曲线
  16. HDU-6437 Problem L.Videos(最大费用最大流拆点)
  17. W5500 dns域名解析
  18. 正方教务管理系统后台敏感日志查看漏洞
  19. Office Word 不显示 Citavi 插件,如何修复?
  20. android系统扫盲教程

热门文章

  1. 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素
  2. ECSHOP 商品详情页相关属性商品 由新到旧排序
  3. 「leetcode」222.完全二叉树的节点个数
  4. Illustrator 教程,如何在 Illustrator 中设计插画?
  5. Illustrator 教程,如何在 Illustrator 中描摹对象?
  6. 玩转MacBook的五个使用技巧
  7. Bartender 让Mac选项列不再拥挤
  8. 最新M1芯片的MacBook Pro打开软件闪退解决方法
  9. 如何在Mac上快速签署PDF
  10. Sass的安装(windows 10)