图中所用到的运维工具应该都是我们比较熟悉的且常用的,从运维框架的层次来看:
我们的运维工作基本都分布在以上4个层次,因此如何高效、高质量的交付就成为了我们主要面对的问题。
对于繁杂的运维工作,我们首先想到的应该都是自动化,那么自动化对技术栈要求高吗?是否需要一定的开发能力?带着这个问题来继续往下看。
从上面的图中可以看出,我主要用到了以下几个技术组件:
以上几个工具大家都不陌生,但是大家对工具的定位不同,也就决定了他们发挥作用的大小。尤其是对Ansible、Jenkins、蓝鲸的定位。
Ansible作为一个自动化运维工具,如果你只是把他当作批量执行命令的工具,那么它的充其量就是一个脚本工具。但是如果把它作为我们运维过程的配置中心呢?
它可以帮助我们完成很多配置管理需求:
作为配置中心,ansible的幂等性、免客户端性可以很友好的在操作系统交付后去实现我们更多的个性化需求。
Jenkins作为持续集成/交付工具,不只是可以在devops领域发挥重要作用,还可以利用其强大的流水线,配合Ansible组件实现更多的参数化流程控制。
理论上Ansible完成的终端操作,都可以利用Jenkins上线界面化的参数化构建,因此Jenkins + Ansible可以组成一个简易的运维平台,实现一系列的场景化操作。
蓝鲸作为腾讯开源研发运维运维一体化平台,它提供的CMDB、标准运维、作业平台、故障自愈可以丰富我们的运维手段。但是最重要的是我们可以依托CMDB配置管理为上层的服务提供可靠的数据支撑,再配合故障自愈+作业平台接入不同的告警源,实现服务的故障自愈。站在巨人的肩膀上,处理问题都会事半功倍。
如果Jenkins+Ansible的功能还不够个性化,那么蓝鲸就是我们的备用方案,在此我们借助蓝鲸实现了以下功能:
蓝鲸毕竟是一套比较重的平台,为此我们并没有全面接入,而是基于蓝鲸的标准运维的开发框架,自行开发定义了
标准运维的原子开发要求我们熟悉Django框架,按照开发规范,即可将我们隔离的运维平台进行打通。
技术栈方面除了蓝鲸标准运维开发外,其他并没有什么运维需要多高的开发能力,只需要我们在平常使用中多总结就能轻松完成。
有了技术栈并不代表我们就可以前路畅通无阻了,相反你会发现由于系统或配置的多样性,你的自动化之路简直就是寸步难行。
究其原因就是运维没有规范,团队成员都有自己的习惯,没有统一的标准规范,只会越来越乱。因此我们从基础设施层、应用层、平台层分别总结了不同的运维规范。
我们大部分的规范都分布在基础设施层,虽然简单但很重要,希望能够引起重视。
应用配置管理规范,主要用于通过流水线交付应用系统时,对于依赖的一系列组件、参数进行规范化要求。在此应用管理规范只是一个统称,在实际应用中可以将其扩充到开发栈:
对于每个应用的数据目录、日志目录、启动参数、配置等各个方面进行规范。
平台规范是我们最后一步,因为我们最终的操作是通过运维各个平台去管理,如果此时没有相关规范限制,这无疑会为以后的某些操作留下隐患。
在此我们创建了以下规范:
在运维自动化建设过程中,主要还是基于运维规范、运维工具、流程控制等方面的结合,而不是分而治之。对于运维来说并没有要求有很高的开发能力,因此我把此过程称之为接地气的自动化建设。希望大家可以借鉴这个初步的模型,给自己的实际工作带来点实质性变化。
原创 木纳大叔爱运维公众号
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。