随着互联网时代飞速发展,互联网公司支撑业务的服务器和交换机数量也日渐增长,与此同时对于服务器的维护成本越来越高,日常管理也相对比较驳杂。如每天仅靠着人工去手动维护服务器,执行大量的重复性的命令,势必会浪费大量的时间和精力,也会带来潜在的风险和漏洞。在这种情况下,便衍生出来了自动化运维。
经历了人工化,脚本化之后,自动化逐渐诞生,自动化的出现使运维的历程前进了一大步,它降低了人工维护的成本,将大量的重复性的工作自动化,将过去的手工操作转为自动化操作。自动化运维不单单是一个维护的过程,也是未来发展的一种必然趋势。
江苏保旺达一直深度垂直于行业客户,致力于提升IT运维服务质量, 满足企业数字化、智能化、远程化的运维需求,实现长期的持续改善,经过大量的项目锤炼以及经验积累,保旺达实现了完善的自动化运维方案。
自动化运维工具
主流的自动化运维工具主要有Ansible 、 SaltStack 、 Puppet 。
Puppet基于rubby开发,C/S架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。分为社区版(免费)和企业版(收费),企业版支持图形化配置。
Saltstack基于python开发,C/S架构,支持多平台,比puppet轻量,在远程执行命令是非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
Ansible相对来说,使用更加简洁方便,不需要在被管服务器上安装代理软件。Ansible基于SSH通道执行所有功能,Ansible是由Python语言开发,对于熟悉python的人而言容易上手。Ansible可以从命令行直接执行命令,而不需要使用配置文件。至于比较复杂的任务则可以使用Ansible-Playbook剧本编写。Playbook还可以使用模板来扩展其功能,目前playbook的模板还是非常丰富的。可以实现批量程序部署,批量服务升级,批量服务实施,批量服务器巡检等多种功能。
主要详述ansible:
Ansible核心框架:组合Inventory、API、Modules、Plugins的绿框,可以理解为是Ansible命令工具,其为核心执行工具。
Inventory 是管理主机的一个配置清单,可以在里面指定操作的主机,自定义变量。其文件默认路径是/etc/ansible/hosts。
Playbook又名剧本,是Ansible的任务集的脚本,它是YAML格式文件,多个Task定义在一个文件中,定义主机需要调用哪些Modules来完成的功能。
Modules是核心模块&自定义模块。Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块。
Plugins插件是对于Ansible模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等。
Ansible实战演练
01 自动化巡检
在北京某局点对ansible进行实际操作。由于设备的繁杂,出于对人力成本的考虑。决定用ansible结合cron模块进行定时自动化巡检。
说明:因系统的不同,ansible调用的协议也不尽相同。访问Linux方面采用SSH协议,访问windows通过WinRM来实现远程管理。
1.配置完主机清单和ansible.cfg相关配置之后。首先编写xunjian.j2(linux巡检脚本模板文件)和windows_xunjian.ps1(Windows巡检脚本模板文件)。
2.通过ansible的templates模块将编写的jinjia2模板文件分发到受控端服务器。并设定其脚本类型,linux系统的为shell脚本,windows的为powershell脚本。可以额外设定将巡检结果存储到指定的日志文件中并集体拉取到ansible管理端。
3.通过ansible-playbook编写linux_xunjian.yml和windows_xunjian.yml。然后可以编写一个总体的xunjian.yml,里面用include将这两个系统的yml文件引进来,这样方便执行。
4.最后一步实现定时运行巡检。运用ansible内的cron模块编写yml脚本,可以在内部设置执行开始时间,执行周期等相关配置。
02 自动化实施
对于系统管理员来讲,每一台机器上根据开发给的需求名单一个一个安装,不仅效率低、劳动成本高、而且容易出错,造成环境的不一致。而Ansible具有幂等性的特点,无论执行多少次,只要你的操作系统是同一个版本,那么安装出来的环境绝对是一样的,这样也就保证了应用所处的底层环境的一致性,而不会造成同一个版本的应用在不同的机器上运行出现不同的效果的问题。
涉及到系统环境的自动化升级,同样可使用ansible来完成,比如批量升级console、hooker、tomcat相关的服务。完全可以通过ansible来实现服务关机、文件备份、文件替换、缓存清理、服务启动等一系列操作。实现自动化的升级而不需要去手动的去多次操作,也避免了手动的误删文件等不良操作。
举个“栗子”:如需在四十台服务器上部署jdk环境,一台一台逐步部署大概需要三个小时才能完成,非常浪费时间和精力。如果使用ansible的话只需要十分钟左右就可以完成。只需要编写好yml文件,准备好jdk安装包。使用ansible-playbook命令去运行即可。
Linux环境部署jdk示例:
Windows环境部署jdk示例:
关注数据 保障未来
扫码|关注我们
微信号|江苏保旺达
网址|http://www.bwda.net