自动化介绍

和大数据、云计算一起热火朝天的就是自动化运维了,然后就有了现在很火的职位DevOps。各个培训机构雨后春笋般,推出了Python自动化运维培训。不知道培训的效果怎样。但是感觉有点误导的意味。

有个朋友参加了某培训机构的Python自动化运维培训,培训完后就给我说他要做自动化运维。当时我就懵圈了,在想他都没做过运维就培训了下Python,然后直接可以实现自动化运维了。仔细聊了以下,原来是他想多了,他所说的只是实现了自动化最后的一步——平台化。

所谓运维自动化就是将日常运维中大量的重复性工作(小到简单的日常检查、配置管理和软件安装,大到整个变更流程的组织调度)由过去的手动执行转化为自动化操作。比如,某个服务需要更改某个配置,在流程中提交,然后经过各个负责人确认,到最后,该服务的所有机器的该配置文件都修改为想要的结果,除了审核不需要人工干预。

从上面可知,并不是朋友所认为的会Python,就意味着会自动化运维了。如果这样认为,那么会PHP、Java、Go等都会运维自动化,市场上就有大量的运维自动化人才可用。

标准化

实现自动化运维,第一个要实现的就是要实现标准化,如果没有实现标准化,实现自动化就是空谈了。以下是要实现标准化的几个方面。

系统安装标准化

个人认为系统的安装是整个运维工作的基础,如果在这个层面没有做到标准化,以后扩容、安装等的批量化管理将遇到各种困难。可以按照下面的步骤来实现标准化,当然也不尽然,可以根据具体实际来进行。

1、使用磁盘的标准化

    在安装系统时,要把这项考虑进去,因为这涉及到最基础的磁盘问题。在改项中要考

虑磁盘的大小、系统盘和数据盘是否要分开、是否要使用RAID、使用哪种RAID方案、

以后磁盘扩容需要什么方案进行扩容等。

2、分区的标准化

    分区要考虑这些问题:怎么去分区、每个分区的大小是多少。

3、安装包的标准化

   在安装系统的后,首先进行的就是初始化步骤,所以安装包的选择也是需要考虑的。

在生产环境中,使用PXE、cobbler等批量安装系统已不在少数,可以根据业务、应用等制作相应的模版来进行批量安装。

主机名标准化

对于做运维的同学来说,主机名的重要性应该最清楚不过了。通过主机名可以知道这台服务器提供的业务、运行的服务等。

主机名的标准化对于实现自动化非常重要,如果主机名都没实现了标准化,接下来的自动化工作会困难重重。

主机名的标准化,也即主机名的规划化,已某个标准(以所在公司为准)来对主机名进行命名。可以根据机房、业务、服务等来进行命名。

对于大规模的服务器的公司,应该都实现了SOA(面向服务的体系架构),可以这样命名:机房-业务-服务-主应用序号等这样的方式来命名,比如用于对于商品介绍的服务器可以这样命名:bjjxq-item-nginx00x;提供商品介绍服务接口的服务可以这样命名:bjjxq-item-api-nginx00x等等。

对于小规模的服务器的集群,可能没有实现SOA的条件,各个服务之间并没有划分的很细。这样仍可以按照上面的第一个方式来实现主机名的标准化,比如对于提供web服务的服务器:bjjxq-web-nginx00x,对于用MySQL提供数据库服务的服务器:bjjxq-db-mysql00x等。

目录标准化

    目录标准化是批量配置管理的关键一步,如果同一业务的各个服务器的应用、日志、代码等都不具有相同的路径,那么批量配置管理、代码上线将无法实现,这样很难想象几百台服务器一个个手工配置、手工代码上线是什么景象了。

安装目录标准化

    安装目录标准化,就是将应用安装在统一路径下,包括各个配置文件。

安装目录实现标准化,对于自动化的批量部署,批量修改配置文件等等都有很大的帮助。比如确定源码文件可以临时存放在/softs目录下,安装可以安装在/app目录。

日志存放标准化

    日志的存放的标准化可以从存放路径、存放时长、存放名三个方面入手。比如nginx服务,存放路径可以统一存放在/logs的目录下,访问日志可以存放为/logs/nginx/nginx_access.log,错误日志可以存放为/logs/nginx/nginx_error.log。进行日志切割后的日志可以加上时间,比如/logs/nginx/nignx_access_20160717.log,/logs/nginx/nginx_error_20160717.log。对于存放时间,需要根据公司的需求,比如需要在服务器本地存放多久的日志,在日志收集的服务器上要保留多久的日志等等。

  

代码目录标准化

    实现代码目录标准化的目的就是为了实现能够批量上线、批量修改某个代码文件的某个地方等等。如果实现了代码目录的标准化。

文件格式的标准化

文件处理大部分都是在日志文件和应用的配置文件。日志文件种类就比较多了,比如错误日志、访问日志、MySQL或PHP的慢查询日志等等。在生产中,接触比较多的就是修改配置文件,因此配置文件的格式实现统一标准的重要性都比较清楚。日志文件格式化也是很重要的,因为通过日志文件可以获取QPS、访问延迟、PV、IP等等指标。

用户标准化

用户的标准化应该是一个重点。用户的标准化包括两个方面:用户名的标准化和用户权限的标准化。

用户名标准化

用户包括业务用户、OP用户、RD用户、应用等等。将用户名的命名使用统一标准来进行,可以根据业务或应用来进行命名,比如dbrd、pmrd等。应用用户可以和业务用户使用相同的用户,即为某个业务提供服务的所有用户使用统一的业务用户。

用户权限标准化

用户权限是重中之重了。用户权限实现标准化,无论是线上环境还是测试环境,可以避免某些安全问题。可以设定某些用户的只是为了登录,想要操作必须使用业务账户或应用账户。具体的设置可以根据所在公司的规范标准设置。



对于要实现标准化的地方还有很多,比如服务端口的标准化、脚本存放的标准化等等。无论是哪方面的标准化,对实现自动化都是不可缺少的,因为实现了标准化,实现自动化才成为可能。

以上是笔者的拙见,有不足之处还请斧正。


 

由于个人技术所限有不足之处还请各位指出。可以通过如下方式联系到笔者:

Linux运维开发群   298324302

北京linux运维求职招聘    153677549