自动化运维
ansible----自动化运维工具
特点:
部署简单,使用ssh管理
管理端与被管理端不需要启动服务
配置简单、功能强大,扩展性强
一、ansible环境搭建
准备四台机器
安装步骤
mo服务器:
进行免密登录
编辑配置文件
测试连接性
设置别名分组
再次测试连通性
group01:
group02:
other:
更改group02的名字
二、file模块
file模块⽤于对⽂件相关的操作(创建, 删除, 软硬链接等)
1.创建目录
查看
2.创建文件
查看
3.递归修改
查看
4.修改文件
查看
5.删除文件
6.创建链接文件
创建软连接
创建硬链接
查看
7.获取文件统计信息
三、copy模块
copy模块⽤于对⽂件的远程拷⻉操作(如把本地的⽂件拷⻉到远程 的机器上)
使⽤content参数直接往远程⽂件⾥写内容(会覆盖原内容)
使⽤force参数控制是否强制覆盖
使⽤backup参数控制是否备份⽂件
copy模块拷⻉时要注意拷⻉⽬录后⾯是否带"/"符号
没有"/"把表示拷贝目录,有"/"表示拷贝目录下的文件
用于远程拷贝文件
给虚拟机传mysql包
查看
改名
复制
将当前目录下的mysql57.tar.gz文件复制到group02组内所有机器的用户主目录中
查看
写入内容
查看
四、user模块
user模块⽤于管理⽤户账号和⽤户属性。
创建aaa⽤户,默认为普通⽤户,创建家⽬录
创建bbb系统⽤户,并且登录shell环境为/sbin/nologin
创建ccc⽤户, 使⽤uid参数指定uid, 使⽤password参数传密码
下⼀句命令注意⼀下格式,密码要⽤双引号引起来,单引号的话验证时会密码不正确
创建⼀个普通⽤户叫hadoop,并产⽣空密码密钥对
删除aaa⽤户,但家⽬录默认没有删除
删除bbb⽤户,使⽤remove=yes参数让其删除⽤户的同时也删除家⽬录
五、group模块
group模块⽤于管理⽤户组和⽤户组属性。
创建组
删除组(如果有⽤户的gid为此组,则删除不了)
六、cron模块
cron模块⽤于管理周期性时间任务。
创建⼀个cron任务,不指定user的话,默认就是root
如果minute,hour,day,month,week不指定的话,默认都为*
删除cron任务
七、yum模块
yum模块⽤于使⽤yum命令来实现软件包的安装与卸载。
使⽤yum安装⼀个软件(前提:group1的机器上的yum配置都已经OK)
使⽤yum安装httpd,httpd-devel软件,state=latest表示安装最新版本
使⽤yum卸载httpd,httpd-devel软件
八、service模块
service模块⽤于控制服务的启动,关闭,开机⾃启动等。
启动vsftpd服务,并设为开机⾃动启动
关闭vsftpd服务,并设为开机不⾃动启动
九、其他模块
hostname模块
hostname模块⽤于修改主机名(注意: 它不能修改/etc/hosts⽂件)
stat模块
stat模块类似linux的stat命令,⽤于获取⽂件的状态信息。
template模块
template模块⾸先使⽤变量渲染jinja2模板⽂件成普通⽂件,然后再复制过去.⽽copy模块不⽀持.(jinja2是⼀个基于python的模板引擎)
template模块不能拷⻉⽬录
fetch模块
fetch模块与copy模块类似,但作⽤相反。⽤于把远程机器的⽂件拷⻉到本地。
注意: fetch模块不能从远程拷⻉⽬录到本地
yum_repository模块
yum_repository模块⽤于配置yum仓库。
增加⼀个/etc/yum.repos.d/local.repo配置⽂件
注意:此模块只帮助配置yum仓库,但如果仓库⾥没有软件包,安装⼀ 样会失败。所以可以⼿动去挂载光驱到/mnt⽬录
# mount /dev/cdrom /mnt
删除/etc/yum.repos.d/local.repo配置⽂件
script模块
script模块⽤于在远程机器上执⾏本地脚本。
在master上准备⼀个脚本
在group1的远程机器⾥都执⾏master上的/tmp/1.sh脚本
(此脚本 不⽤给执⾏权限)
command与shell模块
两个模块都是⽤于执⾏linux命令的,这对于命令熟悉的⼯程师来说,⽤起来⾮常high。
shell模块与command模块差不多
(command模块不能执⾏⼀些类似$HOME,>,等符号,但shell可以)
注意: shell模块并不是百分之百任何命令都可以,⽐如vim或ll别名就不可以。