背景
公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入**自动化运维**工具, 对多台服务器实现高效运维。
需求
通过管理服务器能够按照需求灵活高效地管理所有应用服务器的运维操作
自动化运维
**问题:**
假设我要去1000台服务上做一个操作(如nginx服务器修改配置文件里的某一个参数), 下面两种方法缺点明显:
1. 按传统的方法, 一台连着一台服务器的ssh上去手动操作。
缺点:
* 效率太低。
2. 写个shell脚本来做。
缺点:
* 管理的机器平台不一致,脚本可能不具备通用性。
* 传密码麻烦(在非免密登录的环境下, 需要expect来传密码)
* 效率较低,循环1000次也需要一个一个的完成,如果用`&`符放到后台执行,则会产生1000个进程。
自动化运维: 将日常IT运维中大量的重复性工作,小到简单的日常检查、配置变更和软件安装,大到整个变更流程的组织调度,由过去的手工执行转为自动化操作,从而减少乃至消除运维中的延迟,实现“零延时”的IT运维。
自动化运维主要关注的方面
- 管理机与被管理机的连接(管理机如何将管理指令发送给被管理机)
- 服务器信息收集 (如果被管理的服务器有centos7.5外还有其它linux发行版,如suse,ubuntu等。当你要做的事情在不同OS上有所不同,你需要收集信息,并将其分开处理)
- 服务器分组(因为有些时候我要做的事情不是针对所有服务器,可能只针对某一个分组)
- 管理内容的主要分类
- 文件目录管理(包括文件的创建,删除,修改,查看状态,远程拷贝等)
- 用户和组管理
- cron时间任务管理
- yum源配置与通过yum管理软件包
- 服务管理
- 远程执行脚本
- 远程执行命令