任务背景:
公司的服务器越来越多, 维护⼀些简单的事情都会变得很繁琐。⽤ shell脚本来管理少量服务器效率还⾏, 服务器多了之后, shell脚本⽆ 法实现⾼效率运维。这种情况下,我们需要引⼊⾃动化运维⼯具, 对 多台服务器实现⾼效运维。
任务要求:
通过管理服务器能够按照需求灵活⾼效地管理所有应⽤服务器的运维 操作
任务拆解:
1, 需要⼀台服务器做管理端, 来连接管理所有的应⽤服务器
2, 考虑如果只针对⼀部分应⽤服务器进⾏运维操作如何实现(服务器 分组)
3, 学会将平台烂熟于⼼的linux操作命令转化为⾃动化运维的⽅式(常 ⻅模块的学习)
4, 如果操作⾮常的冗⻓, 学会使⽤playbook和role的⽅式来管理
学习目标:
能够安装ansible服务器和客户端 能够定义ansible主机清单进⾏服务器分组
能够使⽤hostname模块修改主机名
能够使⽤file模块做基本的⽂件操作
能够使⽤copy模块把⽂件拷⻉到远程机器
能够使⽤fetch模块把⽂件从远程拷⻉到本地
能够使⽤user模块管理⽤户
能够使⽤group模块管理⽤户组
能够使⽤cron模块管理时间任务
能够使⽤yum_repository模块配置yum
能够使⽤yum模块安装软件包
能够使⽤service模块控制服务的启动,关闭,开机⾃启动
能够使⽤script模块在远程机器上执⾏本地脚本
能够使⽤command与shell模块远程执⾏命令
能够编写playbook实现httpd
能够使⽤roles实现lamp
一、认识自动化运维
问题: 假设我要去1000台服务上做⼀个操作(如nginx服务器修改配置⽂件 ⾥的某⼀个参数), 下⾯两种⽅法缺点明显:
1. 按传统的⽅法,
⼀台连着⼀台服务器的ssh上去⼿动操作。
缺点: 效率太低。
2. 写个shell脚本来做。
缺点: 管理的机器平台不⼀致,脚本可能不具备通⽤性。 传密码麻烦(在⾮免密登录的环境下, 需要expect来传密码) 效率较低,循环1000次也需要⼀个⼀个的完成,如果⽤&符 放到后台执⾏,则会产⽣1000个进程。
⾃动化运维: 将⽇常IT运维中⼤量的重复性⼯作,⼩到简单的⽇常检 查、配置变更和软件安装,⼤到整个变更流程的组织调度,由过去的 ⼿⼯执⾏转为⾃动化操作,从⽽减少乃⾄消除运维中的延迟,实现 “零延时”的IT运维。
⾃动化运维主要关注的⽅⾯
假如管理很多台服务器,主要关注以下⼏个⽅⾯:
1. 管理机与被管理机的连接(管理机如何将管理指令发送给被管理 机)
2. 服务器信息收集 (如果被管理的服务器有centos7.5外还有其它 linux发⾏版,如suse,ubuntu等。当你要做的事情在不同OS上有 所不同,你需要收集信息,并将其分开处理)
3. 服务器分组(因为有些时候我要做的事情不是针对所有服务器, 可能只针对某⼀个分组)
4. 管理内容的主要分类 ⽂件⽬录管理(包括⽂件的创建,删除,修改,查看