《运维思索》介绍了一系列运维规范、运维管理及自动化的文章,主要分享的是运维自动化建设的部分想法与思路。站在读者的角度,或许只有我本身明白,那么它们在整个运维自动化建设中到底处于什么位置、发挥着什么做用呢?php
先来分享一张比较初步且接地气的图:java
图中所用到的运维工具应该都是咱们比较熟悉的且经常使用的,从运维框架的层次来看:python
咱们的运维工做基本都分布在以上4个层次,所以如何高效、高质量的交付就成为了咱们主要面对的问题。mysql
对于繁杂的运维工做,咱们首先想到的应该都是自动化,那么自动化对技术栈要求高吗?是否须要必定的开发能力?带着这个问题来继续往下看。nginx
从上面的图中能够看出,我主要用到了如下几个技术组件:sql
以上几个工具你们都不陌生,可是你们对工具的定位不一样,也就决定了他们发挥做用的大小。尤为是对Ansible、Jenkins、蓝鲸的定位。数据库
Ansible做为一个自动化运维工具,若是你只是把他看成批量执行命令的工具,那么它的充其量就是一个脚本工具。可是若是把它做为咱们运维过程的配置中心呢?缓存
它能够帮助咱们完成不少配置管理需求:安全
做为配置中心,ansible的幂等性、免客户端性能够很友好的在操做系统交付后去实现咱们更多的个性化需求。markdown
Jenkins做为持续集成/交付工具,不仅是能够在devops领域发挥重要做用,还能够利用其强大的流水线,配合Ansible组件实现更多的参数化流程控制。
理论上Ansible完成的终端操做,均可以利用Jenkins上线界面化的参数化构建,所以Jenkins + Ansible能够组成一个简易的运维平台,实现一系列的场景化操做。
蓝鲸做为腾讯开源研发运维运维一体化平台,它提供的CMDB、标准运维、做业平台、故障自愈能够丰富咱们的运维手段。可是最重要的是咱们能够依托CMDB配置管理为上层的服务提供可靠的数据支撑,再配合故障自愈+做业平台接入不一样的告警源,实现服务的故障自愈。站在巨人的肩膀上,处理问题都会事半功倍。
若是Jenkins+Ansible的功能还不够个性化,那么蓝鲸就是咱们的备用方案,在此咱们借助蓝鲸实现了如下功能:
蓝鲸毕竟是一套比较重的平台,为此咱们并无全面接入,而是基于蓝鲸的标准运维的开发框架,自行开发定义了
标准运维的原子开发要求咱们熟悉Django框架,按照开发规范,便可将咱们隔离的运维平台进行打通。
技术栈方面除了蓝鲸标准运维开发外,其余并无什么运维须要多高的开发能力,只须要咱们在日常使用中多总结就能轻松完成。若是你不信,能够多看下个人部分专栏(公众号最完整):
这些专栏都是从平常中不断总结完善的,抱着对本身负责的态度,这其实都不是难事。
有了技术栈并不表明咱们就能够前路畅通无阻了,相反你会发现因为系统或配置的多样性,你的自动化之路简直就是步履维艰。
究其缘由就是运维没有规范,团队成员都有本身的习惯,没有统一的标准规范,只会愈来愈乱。
所以咱们从基础设施层、应用层、平台层分别总结了不一样的运维规范。
操做系统安装规范
Cobbler无人值守安装操做系统会遵循安装规范、Vsphere虚拟机克隆等都会交付统一的操做系统;
操做系统配置规范
Ansible操做系统初始化会根据此规范,完成内核参数、时间同步、安全基线、安装源等一系列标准初始化;
目录管理规范
对基础组件、应用组件、日志等各个目录进行定义,后续的一系列操做都将基于这些标准目录;
应用配置管理规范,主要用于经过流水线交付应用系统时,对于依赖的一系列组件、参数进行规范化要求。在此应用管理规范只是一个统称,在实际应用中能够将其扩充到开发栈:
对于每一个应用的数据目录、日志目录、启动参数、配置等各个方面进行规范。
平台规范是咱们最后一步,由于咱们最终的操做是经过运维各个平台去管理,若是此时没有相关规范限制,这无疑会为之后的某些操做留下隐患。
在此咱们建立了如下规范:
Vsphere管理规范
Vsphere虚拟机建立、分配、回收等生命周期的管理依据
JumpServer管理规范
JumpServer资产的分组、权限方面的管控
Zabbix管理规范
Zabbix主机群组、主机、模板、监控间隔、告警等多方面进行管理
CI/CD规范
Jenkins 的job、流水线、slave节点等方面的管理
在运维自动化建设过程当中,主要仍是基于运维规范、运维工具、流程控制等方面的结合,而不是分而治之。对于运维来讲并无要求有很高的开发能力,所以我把此过程称之为接地气的自动化建设。但愿你们能够借鉴这个初步的模型,给本身的实际工做带来点实质性变化。
以上只是我在初步的运维自动化建设中的一些分享与看法,但愿给你们可以带来一些思路与启发,不要两眼一抹黑。随着运维自动化建设的不断深刻,就会对开发能力、平台整理能力有了更高的要求,这时相信你的能力也会逐渐匹配,你们一块儿加油!