再聊我们自研的那些Devops工具
两年前我写了篇文章『我们自研的那些Devops工具』介绍了我们自研的一些DevOps工具系统,两年过去了这些工具究竟还有没有在发光发热,又有哪些新的变化呢,我将通过这篇文章来回顾一下这两年的发展与变化
CMDB
CMDB配置管理数据库,作为整个运维体系构建的基础,几乎其他所有的运维工具系统都要依赖他提供的基础数据,所以保证稳定非常重要,这里的稳定不仅指的是系统运行状态的稳定,还有数据结构、功能的稳定,其数据结构一旦改变上游系统可能都要跟着修改,所以在规划CMDB的迭代更新时,首先要考虑兼容性,已有功能不做过多修改,仅进行新功能的添加
基于以上考量,CMDB在这两年来整体功能没有太大变化,功能上仅是将主机监控给集成进来,可以在cmdb里直接搜索对应主机查看监控,而无需再去监控系统检索,同时在易用性上有了提升,例如去掉了目录树,丰富了展示信息,优化了检索功能

nova
nova系统主要用来做生产环境的持续部署,之前的文章里也有介绍,由于我们的环境比较复杂,公有云、私有云、云主机、物理机、Kubernetes等都有使用,并且分布在不同地区的机房,为了方便维护,我们专门抽离了生产环境的部署功能做了nova系统
持续集成原本是通过varian系统来实现的,但现在我们已经彻底废弃了varian,用更为强大的自定义任务引擎Probius来代替了,Probius下边介绍
现在将回滚功能也集成进了nova,回滚基于Docker镜像来实现,选择要回滚环境,会根据环境拉对应项目和环境去Dockerhub拉取相应的镜像列表,选择镜像进行回滚,可以快速回滚到之前的任何一个版本

还为nova增加了批量任务执行的功能,主要基于Ansible来实现,详细介绍可以看之前的文章:Django+Ansible构建任务中心思路,借助于批量任务可以方便的进行多节点异常排查,以及非部署类的任务处理

kerrigan
作为对运维非常友好的配置管理工具,Kerrigan在整个项目运行中起着至关重要的作用,目前已经管理了数百个不同类型的配置文件,保障了上万次的配置修改得以正常执行,近两年来也对其进行了优化升级,主要有2个方面
confd该为watch模式,配置修改立即生效。这个主要是针对nginx配置文件的管理,在之前的模式中,配置修改之后需要重新部署项目或者重启confd服务配置才能生效,这个过程较为繁琐,于是我们将confd改为了watch模式,配置一旦修改就会立即更新,这个模式有一个风险在于如果配置改错了怎么办?配置改错分两种情况,语法错误与规则错误,首先confd在更新配置文件前会检查配置文件是否有语法错误,如果没有才会更新,这样就避免了因为语法错误导致的更新失败,其次对于规则本身写错的问题,这个只能在更新前认真检查了,即便不是watch模式自动更新也会有这种问题存在,为此kerrigan做了几个方面的优化来尽量保证不改错以及改错后能快速修正,具体的可以看这篇文章:Kerrigan:配置中心管理UI的实现思路和技术细节,包括配置对比、快速回滚等
提供了完善的API。kerrigan除了管理了nginx之类的服务配置外,同时还管理了Dockerfile之类的文件,在持续集成的过程中需要用到Dockerfile,所以为Kerrigan提供了API来支持通过http的方式来获取配置文件,以便在Probius系统中使用配置文件,为此还用Python专门写了个获取配置文件的系统命令,只需要一个命令即可获取kerrigan里的配置文件,具体的实现方式可以看这里:用Python写个Linux系统命令

overmind
最开始写overmind系统仅仅是一个SQL审核平台,做到现在已经成了一站式DB管理系统,从工单开始,到DB信息添加,密码管理、权限管理,DB查询与审计,DB执行审核等一系列数据库相关的操作均可借助于overmind系统来完成

proxy
proxy代理系统在易用性上有了不小的提升,首先是创建实例时选择协议,如果想要一个实例同时支持http和https两种协议,则在之前的版本需要创建两个实例,而现在则可以选择HTTP和HTTPS都支持,创建的实例将同时支持http和https协议访问,同时还可以配置是两个协议都可以同时访问还是http强制跳转至https,操作简单了许多

另一个修改是,可以编辑是否开启日志,如果开启的话还能在页面上实时监听日志,这对于某些排错的场景非常好用,实时监听日志就是模拟了tailf的功能,感兴趣的可以查看这篇文章:Django使用Channels实现WebSocket

关于proxy的详细介绍可以查看这篇文章:Proxy:简单小巧又强大好用的代理系统
wiki
wiki整体功能没有太大的变化,只是强化了搜索功能,首页依然是个目录树,内页则只有内容,聚焦重点,没有花里胡哨的功能,不过随着目录的越来越多,后边若是重构则会考虑增加空间的概念,团队与团队,板块与板块之间做个区分还是很有必要的

我们自研的那些Devops工具这篇文章里介绍过的工具除了varian已经完全废弃了之外,其他的各个系统都有在正常使用和迭代更新,生命力依然顽强。除了以上这些系统外,近两年还开发了一些新的工具系统
alodi
alodi系统主要用来快速生成临时环境,并实现对临时环境整个生命周期的一站式管理,主要应用在同一项目多版本同时开发测试或是保密项目不能通过常规测试环境测试的情况下使用,通过alodi可以快速的创建一个项目运行环境,通过生成的随机临时域名访问
alodi基于Kubernetes实现,部署过程日志、容器终端日志、进入容器终端查看都可以在alodi系统中实现,无需跳转到其他系统,同时为了应对某些特殊的测试环境,还允许绑定自定义域名,使用完成之后一个按钮即可销毁所有创建的资源

更多alodi的介绍可以查看这篇文章:Alodi:环境创建从未如此简单
webssh
通过webssh实现堡垒机功能,通过webssh连接远程主机,可以记录会话信息,对操作进行录像,后续还可进行审计,同时也可以实时查看其他用户的操作过程,提取操作命令等,为了方便使用,还通过目录树增加了分组功能

probius
自定义任务引擎probius是这两年实现的最重要的一个系统,具有强大且灵活的任务编排能力,最初只是想取代varian,但现在不仅做到了完美的取代,而且在易用性功能性上有了很大的提升,现在每天都有数十上百个持续集成任务通过probius来完成,同时还把kubernetes以及prometheus都集成了probius系统
probius的三个核心概念是命令、模板和任务,命令是系统中的最小粒度,可以是一个具体的linux命令或是一个可以执行的脚本,模板是一组命令的组合,任务包含了模板和参数,同一个模板对应不同的参数就会是多个不同的任务,基于这种思想probius可以实现任何的功能,无论是日常巡检还是发布上线,都可轻松应对

probius跑了所有开发测试环境的部署任务,而开发测试环境依赖的底层资源是Kubernetes,所以为了方便使用,Probius也集成进了Kubernetes和Prometheus,Kubernetes和Prometheus是作为插件的形式集成进来的,可以不用,对probius本身影响不大
sadmin
Sadmin是一个Django的基础公共库,这个公共库集成了许多基础的功能,例如后台配置网站标题、Title以及主题,动态配置菜单,自动的审计日志记录,多种认方式等等,同时也对最常用到的CRUD进行了封装,使用起来得心应手
目前以上这些系统几乎全都使用了Sadmin公共库进行了重构,保证了统一,也方便后续维护,sadmin公共库的更多介绍看这里:Sadmin:打造私有Django公共库实现代码复用
最后
我们自研的那些Devops工具的文章里写未来一年的计划,将那些相对分散的系统给串联起来,现在未来已成过去,我们借助于probius实现了对多个系统的串联,实现了更高程度的自动化,那下一阶段要怎么发展?真的需要再停下来认真思考一下了
除了以上这些DevOps相关工具系统外,我还协助开发了一些业务相关的系统,例如前两天介绍的需求管理系统,关于以上这些工具系统,我写过很多相关文章来介绍,感兴趣的可以前往运维咖啡吧同名公众号或是博客查看,如有想法可以一起交流
再聊我们自研的那些Devops工具的更多相关文章
- 我们自研的那些Devops工具
随着云技术以及容器技术的崛起,人肉运维的时代结束了 2018年为了解决日常运维中的痛点以及更高效的推进运维工作,我们自研并完善了几个工具系统,这些系统无一例外的帮我们节约了时间,提高了效率,这篇文章将 ...
- 如何选择正确的DevOps工具
坦白的讲:世界上没有哪种工具能够像DevOps这么神奇(或敏捷,或精益).DevOps在开发和运营团队之间建立了完美的合作与沟通,因此与其说这是一种神奇的工具,不如说是一种文化的转变. 然而,团队之间 ...
- Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
Fbric.Ansible.Docker.Chaos Monkey:DevOps工具的年中回顾 [编者按]近日,Cyber Engineering Solutions Group 技术经理 Hasan ...
- Web Scale IT 与 6 种 DevOps 工具
新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势.Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale ...
- DevOps工具链
Devops工具链 DevOps实际是一种文化上的变迁,代表了开发.运维.测试等环节之间的协作,因此DevOps工具是非常多种多样的,甚至可以由多种工具组成一个完整的DevOps工具链.此类工具可以应 ...
- 一文解读DevOps工具链 (转)
在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年-2017年),列出几个相对明确又有所 ...
- 从大厂DevOps工具链部署,看现代产品的生命周期管理
目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...
- devops工具链概述
1. devops工具链概述 1)devops工具篇 2) 持续集成 3) 持续交付 4) 持续部署 2. devops工具链概述
- 研发过程及工具支撑 DevOps 工具链集成
https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg 腾讯重新定义敏捷 |Q推荐 小智 InfoQ 2020-09-03 敏捷开发奠基人 Robert C ...
随机推荐
- elf文件--基于《ctf竞赛权威指南pwn篇》
1.ELF概念: ELF(Executable and Linkable Format),即"可执行可链接格式",最初由UNIX系统实验室作为应用程序二进制接口(Applicati ...
- C语言中都有哪些常见的数据结构你都知道几个?
上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈.队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见的数据结构,原来我们学过的数据结构有这么多~ 首先,先来回顾下C语言中常见 ...
- Spring中自定义Schema扩展机制
一.前言 Spring 为基于 XML 构建的应用提供了一种扩展机制,用于定义和配置 Bean. 它允许使用者编写自定义的 XML bean 解析器,并将解析器本身以及最终定义的 Bean 集成到 S ...
- 深入理解和运用Pandas的GroupBy机制——理解篇
GroupBy是Pandas提供的强大的数据聚合处理机制,可以对大量级的多维数据进行透视,同时GroupBy还提供强大的apply函数,使得在多维数据中应用复杂函数得到复杂结果成为可能(这也是个人认为 ...
- IdentityServer4 负载均衡配置
在不用到负载之前,一切都很好,但是部署多个实例之后,问题挺多的:session问题.令牌签发后的校验问题. 在此之前,先自查官方文档:Deployment - IdentityServer4 1.0. ...
- objdump--反汇编查看
转载:objdump命令_Linux objdump 命令用法详解:显示二进制文件信息 (linuxde.net) objdump命令 编程开发 objdump命令是用查看目标文件或者可执行的目标文件 ...
- {% csrf_token %} 原理和作用 (踩坑必看)
本博客已暂停更新,请转自新博客 https://www.whbwiki.com/320.html 继续阅读 简介 在django中我们需要在templates的form中加入{%csrf_token% ...
- 理解ASP.NET Core - 日志(Logging)
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 快速上手 添加日志提供程序 在文章主机(Host)中,讲到Host.CreateDefault ...
- linux堡垒机下定位日志文件内容
查找关键词grep 命令: grep '关键字' 文件 --color 功能:搜素文件内容 语法: grep [-iv] 关键字 文件 -i 不区分大小写 -v 忽略指定字符串 -n 显示行号 -C ...
- [linux]centos7.4安装nginx
下载nginx wget http://nginx.org/download/nginx-1.5.6.tar.gz 解压包安装在/opt/nginx. 目录下, 1.安装gcc(centos 7之后一 ...