自动化运维之自动化构建

说到自动化运维,我们不得不先讲讲自动化构建。在项目前期,我们每周甚至每天都要把代码包提交到开发和测试环境,然后触发人工或者自动化测试程序,如果发现了问题再等开发修复后滚动发布。在项目中期,我们可能每周或每月需要将经过测试的代码包发布到生产环境,然后进行功能验证,直接交给用户使用。在自动化构建没有流行的时候,我们这些发布新代码包的工作,都需要人工完成,不仅效率低还很容易出错。

然而这几年随着dev ops/ai ops等概念的流行,每个公司都在实践或者准备实践dev ops,自动化构建就属于dev ops的重要部分。笔者认为这几年自动化构建有多种技术实现方式,对于中小型项目,服务器几百台而言,github+maven+jenkins+ansible/ansible tower足够完成自动化构建的任务。简单地说,我们可以实现一键发布,只要收一收邮件或者看看发布日志就结束了,边喝茶边等结果,悠哉游哉。​接下来我先分别大概介绍下这些自动化构需要的技术或者工具。

github想必凡是IT行业从业人员听过或者使用过,甚至开发人员在重度使用,他也是大家俗称的全球最大的同性交友网站,哈哈哈!引用下百度百科对github的介绍。作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。

maven估计只有开发人员听过,他主要完成java项目的项目构建管理、项目依赖管理、软件项目持续集成、版本管理等等。​比较正规的开发项目经常会用到该工具,对于运维人员,尤其是准备或者已经在做dev ops的同学来说,最好也熟悉下。

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。jenkins算是持续集成的核心平台了。

ansible是一个开源的项目,目前在github很流行,由于他只要被管理机器是安装了python的Linux系统就可以,目前主流的Linux都自带了python,例如Redhat6-7,CentOS6-7等等,所以无需在被管机器安装任何Agent就可以直接ansible对被管理机器进行操作。常见的发布任务都支持,代码包分发下载,配置修改,服务重启,甚至DB的sql操作都可以完成,凡是发布任务几乎无所不能。ansible 是基于python实现的,虽然效率不如c/c++高,但是使用起来真的很方便。

ansible tower是一个商业项目,目前已经被Redhat收购,是被封装过的ansible平台,以安全、规范著称,有钱的公司都在花钱使用他,如果IT比较穷可以先不用。

今天就先讲到这里,后续再细讲自动化构建的具体内容。​谢谢!

猜你喜欢

转载自www.cnblogs.com/lihuanhuan/p/12375344.html