图中所用到的运维工具应该都是我们比较熟悉的且常用的,从运维框架的层次来看:
- 基础设施层,Vsphere虚拟化、物理机等;
- 数据层,数据库、elk、缓存等;
- 应用层,各种基础组件、业务应用,如java、python、php、nginx、中间件等;
- 平台层,各种监控工具、管理工具,如Vsphere、jumpserver、Jenkins等;
我们的运维工作基本都分布在以上4个层次,因此如何高效、高质量的交付就成为了我们主要面对的问题。
2 技术栈
对于繁杂的运维工作,我们首先想到的应该都是自动化,那么自动化对技术栈要求高吗?是否需要一定的开发能力?带着这个问题来继续往下看。
从上面的图中可以看出,我主要用到了以下几个技术组件:
- Cobbler
- Ansible
- Jenkins
- 蓝鲸
- Python
- Prometheus
- Zabbix
- Vsphere
- JumpServer
以上几个工具大家都不陌生,但是大家对工具的定位不同,也就决定了他们发挥作用的大小。尤其是对Ansible、Jenkins、蓝鲸的定位。
2.1 Ansible
Ansible作为一个自动化运维工具,如果你只是把他当作批量执行命令的工具,那么它的充其量就是一个脚本工具。但是如果把它作为我们运维过程的配置中心呢?
它可以帮助我们完成很多配置管理需求:
- 操作系统初始化
- 安全基线调整
- 环境初始化,如java、python
- 基础组件安装,如nginx、python
- 批量执行命令
- 中心化备份控制
- mysql同步
作为配置中心,ansible的幂等性、免客户端性可以很友好的在操作系统交付后去实现我们更多的个性化需求。
2.2 Jenkins
Jenkins作为持续集成/交付工具,不只是可以在devops领域发挥重要作用,还可以利用其强大的流水线,配合Ansible组件实现更多的参数化流程控制。
- 参数化操作系统初始化
- 参数化应用系统上线
理论上Ansible完成的终端操作,都可以利用Jenkins上线界面化的参数化构建,因此Jenkins + Ansible可以组成一个简易的运维平台,实现一系列的场景化操作。
2.3 蓝鲸
蓝鲸作为腾讯开源研发运维运维一体化平台,它提供的CMDB、标准运维、作业平台、故障自愈可以丰富我们的运维手段。但是最重要的是我们可以依托CMDB配置管理为上层的服务提供可靠的数据支撑,再配合故障自愈+作业平台接入不同的告警源,实现服务的故障自愈。站在巨人的肩膀上,处理问题都会事半功倍。
如果Jenkins+Ansible的功能还不够个性化,那么蓝鲸就是我们的备用方案,在此我们借助蓝鲸实现了以下功能:
- 多环境(测试、准生产、生产)虚拟机上架,实现cmdb、zabbix、jumpserver等平台的联动;
- cmdb事件推送,配合python自行开发的事件推送网关,实现了以cmdb为依据的,zabbix、cmdb资产同步;
蓝鲸毕竟是一套比较重的平台,为此我们并没有全面接入,而是基于蓝鲸的标准运维的开发框架,自行开发定义了
- Vsphere原子
- Jumpserver原子
- CMDB自动注册原子
标准运维的原子开发要求我们熟悉Django框架,按照开发规范,即可将我们隔离的运维平台进行打通。
技术栈方面除了蓝鲸标准运维开发外,其他并没有什么运维需要多高的开发能力,只需要我们在平常使用中多总结就能轻松完成。
3 运维规范
有了技术栈并不代表我们就可以前路畅通无阻了,相反你会发现由于系统或配置的多样性,你的自动化之路简直就是寸步难行。
究其原因就是运维没有规范,团队成员都有自己的习惯,没有统一的标准规范,只会越来越乱。因此我们从基础设施层、应用层、平台层分别总结了不同的运维规范。
3.1 基础设施层
我们大部分的规范都分布在基础设施层,虽然简单但很重要,希望能够引起重视。
- 操作系统安装规范Cobbler无人值守安装操作系统会遵循安装规范、Vsphere虚拟机克隆等都会交付统一的操作系统;
- 操作系统配置规范Ansible操作系统初始化会根据此规范,完成内核参数、时间同步、安全基线、安装源等一系列标准初始化;
- 目录管理规范对基础组件、应用组件、日志等各个目录进行定义,后续的一系列操作都将基于这些标准目录;
3.2 应用层
应用配置管理规范,主要用于通过流水线交付应用系统时,对于依赖的一系列组件、参数进行规范化要求。在此应用管理规范只是一个统称,在实际应用中可以将其扩充到开发栈:
- java
- python
- php
对于每个应用的数据目录、日志目录、启动参数、配置等各个方面进行规范。
3.3 平台规范
平台规范是我们最后一步,因为我们最终的操作是通过运维各个平台去管理,如果此时没有相关规范限制,这无疑会为以后的某些操作留下隐患。
在此我们创建了以下规范:
- Vsphere管理规范Vsphere虚拟机创建、分配、回收等生命周期的管理依据
- JumpServer管理规范JumpServer资产的分组、权限方面的管控
- Zabbix管理规范Zabbix主机群组、主机、模板、监控间隔、告警等多方面进行管理
- CI/CD规范Jenkins 的job、流水线、slave节点等方面的管理
4 小结
在运维自动化建设过程中,主要还是基于运维规范、运维工具、流程控制等方面的结合,而不是分而治之。对于运维来说并没有要求有很高的开发能力,因此我把此过程称之为接地气的自动化建设。希望大家可以借鉴这个初步的模型,给自己的实际工作带来点实质性变化。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/303263.html