一、ansible介绍
实现对IT基础设施的批量管控,加快效率、节省工作时间
1、ansible特性
1、基于python开发、开源
2、基于SSH协议工作
3、no server
4、no agent
5、支持playbook剧本
6、提供API
二、ansible安装部署
1、配置免密SSH
2、安装ansible
3、查看模块帮助
查看所有模块
查看yum模块
三、主机清单文件 Inventory ------ /etc/ansible/hosts
1、单个主机
all代表主机清单里的所有机器
2、定义主机组
定义组时,一台机器可以属于多个组
四、AD HOC
ansible使用模式:
ansible pattern -m 模块名称 -a 模块命令
pattern的写法:
1、IP地址
2、主机组名
3、所有 all
4、多个主机组
五、常用模块
1、ping模块 测试通信
2、shell 模块 批量执行shell命令
参数:
1)chdir= 切换目录
3、copy模块
推送文件
常用参数:
1、src= 源文件
2、dest= 目的文件
3、mode= 权限
4、owner= 属主
5、group= 属组
4、fetch模块
拉取文件
常用参数:
1、src= 源文件
2、dest= 目的文件
3、mode= 权限
4、owner= 属主
5、group= 属组
5、file模块
管理文件目录
常用参数:
path= 指明对哪个文件修改其属性
owner= 指明文件的属主
group= 指明文件的属组
mode= 指明文件的权限
state=directory|link|absent|touch 表示创建的文件是目录还是软链接
src= 指明path=指明的文件是软链接文件,其对应的源文件是谁,必须要在state=link时才有用
absent删除文件将/tmp/file01文件删除
6、yum模块
管理rpm软件
常用参数:
name= 软件名称
state= {present|absent|latest} 安装、卸载、更新
enablerep= 启用yum仓库
disablerepo= 禁用yum仓库
状态不写默认为安装present
7、service模块
管理系统服务
常用参数:
name= 服务名称
state= {start|restarted|stopped} 启动、重启、停止
enabled= {yes|no}
8、cron模块
管理计划任务
minute= 指明计划任务的分钟,支持格式:0-59,*,*/2等,与正常cron任务定义的一样的语法,省略时,默认为*,也就是每分钟都执行
hour= 指明计划任务的小时,支持的语法:0-23,*,*/2等,省略时,默认为*,也就是每小时都执行
day= 指明计划任务的天,支持的语法:1-31,*,*/2等,省略时,默认为*,也就是每天都执行
month= 指明计划任务的月,支持的语法为:1-12,*,*/2等,省略时,默认为*,也就是每月都执行
weekday= 指明计划任务的星期几,支持的语法为:0-6,*等,省略时,默认为*,也就是每星期几都执行
name= 给该计划任务取个名称,必须要给明。每个任务的名称不能一样。
job= 执行的任务是什么,当state=present时才有意义
state=present|absent 表示这个任务是创建还是删除,present表示创建,absent表示删除,默认是present
9、group模块
管理用户组
常见参数:
name= 被管理的组名
state=present|absent 是添加还是删除,不指名默认为添加
gid= 指明GID
system=yes|no 是否为系统组
10、user模块
管理用户
常见参数:
name= 指明要管理的账号名称
state=present|absent 指明是创建账号还是删除账号,present表示创建,absent表示删除
system=yes|no 指明是否为系统账号
uid= 指明用户UID
group= 指明用户的基本组
groups= 指明用户的附加组
shell= 指明默认的shell
home= 指明用户的家目录
move_home=yes|no 当home设定了家目录,如果要创建的家目录已存在,是否将已存在的家目录进行移动
password= 指明用户的密码,最好使用加密好的字符串
comment= 指明用户的注释信息
remove=yes|no 当state=absent时,也就是删除用户时,是否要删除用户的家目录
11、script模块
将脚本推送给被管理端自动执行、执行完成后删除脚本
12、setup模块
搜集被管控端的状态数据(CPU型号、内存大小、硬盘、IP、操作系统版本),统称为facts变量