跳转至

引言

1. 运维自动化介绍

# https://zhuanlan.zhihu.com/p/127374299

所谓自动化运维,实际上需要利用一些开源的自动化工具如:ansible、saltstark、puppet 等这些比较常见工具,
管理服务器及服务。说白了就是批量管理服务器工具。帮忙运维解决重复性工作的。

举个栗子:
代码上线,上线开始,把代码从代码版本管理器(svn、git)里面拿出来,然后copy到服务器,每一个步骤都是相同的,
还得手巧代码非常费劲,那就写个shell,每次上线,我就执行shell就搞定了,如果十几二十几台服务器还能这么搞,
多了估计你都乱了。这里面就需要使用自动化的一些工具:如,ansible、Saltstark、Puppet等,看你自己需求。
这些自动化运维工具,基本属于运维必备技能了,好多公司也都有要求。下面就详细唠唠自动化运维。

2. 自动化运维-初级

自动化发布:利用自动工具,shell 。比如: ansible + shell + jenkins + gitlab 解决一些自动化发布问题
自动化部署: 利用 shell、ansible,编写playbook 做一些 标准化东西,
例如:服务器初始化、服务初始化(nginx、mysql等等)
日志管理:可以用 rsyslog 管理日志,日志量多了,再打个包,或者弄个NFS存储,保留多少天。
监控自动化: 可以利用zabbix ,监控一些标准化的指标,根据服务器及业务的实际性能。

在这期间你都可以用shell 解决大部分问题,例如:mysql备份、代码发布、服务器初始化、日志管理等等。
这里面有个问题,当你服务器管理越多,你维护的成本越高,尤其是这里面还涉及到
资源的管理、资源利用率、机器效能、SLA当你在弄这些的时候就比较麻烦。
这时候你就需要弄个简单的CMDB类似的这种。当然开源的产品其实挺多的,但是适合你们公司估计就少了很多。
这里面大部分都是用Python写的,当然也有java、go写的
这里的面的大部分问题,基本上运维工程师都能搞定,代码开发量很少(Shell),所需技术栈

3. 自动化运维- 进阶

首先要弄个 CMDB,你可以叫基础信息管理、服务器信息管理等等或者资源信息。
通常情况,我们会收集服务器信息,作为基础信息,后面写一些跟这个相关都需要使用这些基础信息,
如:发布系统、监控管理、配置中心等等。
这里面我们选择写这个系统的语言,大部分都是会使用Python+Django+bootstrap
这里面还涉及到一个服务树的概念,后面再说


发布系统,主要解决,代码自动发布。这里面有几个选择吧
自己从头到尾写,包括设计、开发等等
调用其他比较成熟的devops 工具,例如: 可以调用jenkins API、 或者gitlab runner 的API等
无论你用哪种方式去写,都需要用到开发语言

配置中心,主要解决,管理软件服务中的配置文件和代码中的配置文件。
当然这里面有些成熟的配置中心可以做参考,但是不一定适用你们,如:disconf、Apollo等
或者自己撸个程序。

域名管理系统
内网域名 管理,这里主要是指: IDC 机房内部、或者云上内部,例如:我们之前适用bind做内网解析的使用,天天维护配置文件,很烦。那我们就可以自己搞个系统。把配置文件这些数据都写到数据库中进行管理就会方便很多。
外网域名管理,其实这个就是调用第三方接口,进行域名更改,例如: 万网API、Dnspod等等

堡垒机,
这里面也有开源产品,比较出名的 jumpserver
或者自己撸系统

升级状态这块,其实都需要你具备一定开发技能,这里面大多数都用使用Python、Django来写,因此运维开发这个职位也就来了
当然如果你们公司已经上 docker、k8s,那你就需要去调用 k8s API 等等,这些都需要一定的开发基础

最后更新: 2022-02-20 11:21:58