ansible重要必须掌握的模块说明
文件类型的模块:
copy --- 复制文件到远程主机上(管理主机 -- 被管理主机上) (推,上传)
参数
·src:指定将本地什么数据信息进行复制
·dest:指定复制的数据保存的路径信息
实践操作01:完成基本远程复制操作
mode: 数据被复制之后,修改文件权限属性信息
mode=600
owner:设置文件属主信息
group:设置文件属组信息
时间操作02:完成复制文件,并且修改文件权限属性信息(属主 属组 权限)
backup: 复制备份 backup=yes
时间操作03:开启复制备份功能
remote_src:指定使用源信息是什么
如果参数设置为no: remote_src=no 表示src路径数据信息从管理主机进行获取
如果参数设置为yes: remote_src=yes 表示src路径数据信息从被管理主机进行获取
content:批量再远程主机直接创建文件,并再文件中写入简单的信息(太多的信息是生成不了的 )
实践操作:
fetch --- 复制文件从远程主机到本地管理主机上 (拉,下载)
src:指定将远程主机上的什么数据信息进行拉取
dest:指定将远程主机上的数据信息拉取保存到本地
——————————————————————————————————————
file: 设置文件属性信息/进行文件 目录 连接文件创建
参数
src:源文件
path (以前叫dest可以混合使用):指定要修改属性信息的数据信息;指定要创建数据的路径信息。
mode: 表示修改文件目录权限信息。
owner:修改数据属主信息
group:修改数据属组信息
实践操作
ansible all -m file -a "dest=/ceshi/mmp.txt mode=600 owner=root group=root"
以上是修改文件,也可以对目录进行修改,但是修改目录后,不会递归修改目录下文件进行修改
recurse:recurse=yes:可以对目录下的东西进行递归修改
ansible all -m file -a "dest=/ceshi/shenfan mode=600 owner=oldboy group=oldboy recurse=yes"
state:实现再远程主机上 批量创建数据信息(以下几种情况组合使用)
file:默认用于检测文件是否存在
touch:用于创建普通文件
directory:用于创建目录文件
link :创建软连接
hard:创建硬链接
absent:删除数据
实践操作02:创建空文件 空目录 链接文件的方法
创建文件:state=touch
ansible all -m file -a "dest=/ceshi/Sf.txt state=touch "
创建目录:state=directory
ansible all -m file -a "dest=/ceshi/Sf.d state=directory "
创建文件硬链接:state=hard
ansible all -m file -a "src=/crshi/mmp.txt dest=/ceshi/mmp.txt_hard.link state=hard "
创建软连接:state=link
ansible all -m file -a "src=/ceshi/mmp.txt dest=/ceshi/mmp.txt_soft.link state=link "
删除数据:state=absent(默认就是递归删除)
archive :对文件或者目录数据信息进行压缩处理
参数
path:将什么数据信息进行压缩处理
dest:将压缩完后的数据包保存在什么路径中
format:表示压缩成什么类型的压缩包(bz2,gz* tar xz zip)
exclude_path:派出指定输出信息不会被压缩处理
remove=yes/no:
实践操作(未解决的)
总结:file类型重要模块
copy, fetch ,file, archive ,unarchive ,template
——————————————————————————————————————
yum:下载软件的模块
参数
name:制定下载软件的名称信息
state:指定是否下载 卸载
installed ; present ; latest :下载安装
absent ; removed :软件卸载
实践操作:下载/卸载安装软件
下载软件
注意:yum模块安装过一次之后再次安装,会变成绿色提示,但是不会重新安装,shell模块就会重新安装。用shell安装现在看不出什么问题,但是以后剧本理由判断就会出错!
——————————————————————————————————————
ping :用于测试管理端到被管理端连通性模块
——————————————————————————————————————
service : 管理服务启动/停止/重启 ; 管理服务是否开机自动运行或者关闭
参数
name : 定义服务名称
enabled=no/yes :控制服务是否开机自启动
state : 服务启动状态。 =reloaded :平滑重启; = restarted:重启 ; =started:启动; =stopped:停止。
——————————————————————————————————————
cron:批量设置定时任务
时间信息参数:
minute: 分 0-59
hour: 时 0-23
day: 日 1-31
month:月 1-12
weekday: 周 0-6
任务信息定义
job : 定义执行的定时任务信息
name:定义定时任务的注释信息,注释信息相同的定时任务不会重复设置
拓展参数信息
state:定义向应定时任务是否删除
=absent:表示删除
=present 表示创建
disabled:定义相应定时任务是否注释
yes:注释定时任务
no:取消注释
实践操作:编写定时任务 (每天凌晨两点二十分 执行一个脚本)
ansible 172.16.1.71 -m cron -a "minute= hour=* day= month= weekday=* job='/bin/sh /server/scripts/dingshi.sh"
ansible 172.16.1.71 -m cron -a "minute=20 hour=02 day=* month=* weekday=* job='/bin/sh /server/scripts/dingshi.sh"
以上设置方式会出现重复的定时任务可以crontab -l查看
加上name就可以解决以上问题,相当于给定时任务起一个特殊的名字,这样就不会重复启动。
ansible 172.16.1.71 -m cron -a "name='oldboy-01' minute=20 hour=02 day=* month=* weekday=* job='/bin/sh /server/scripts/dingshi.sh"
定时任务设置名称效果总结
1:没有任务名称 定时任务相同,会再相应任务上添加名称注释信息
2:任务名称相同 定时任务相同,不会重复创建定时任务
3:任务名称相同,定时任务不同,会对原有名称定时任务进行修改
实践操作:删除定时任务
ansible 172.16.1.71 -m cron -a "name='oldboy-01' state=absent"
根据服务名称进行删除即可
mount:挂载
path:定义挂载点信息
src:要被挂载的设备信息
fstype:指定挂载的文件系统信息
state:指定挂载操作方式
mounted present:挂载
unmounted absent:卸载
实践操作:
挂载:
showmount -e 先检查
ansible all -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted"
利用mounted挂载参数,即完成了设备挂载操作,有修改了/etc/fstab
文件信息。
卸载:ansible all -m monut -a "path=/mnt state=unmounted"
卸载,但是并不会改变/etc/fstab里面的文件信息
present挂载
ansible all -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=present"
指挥修改etc/fstab下的文件信息,不会直接挂载
卸载:ansible all -m monut -a "path=/mnt state=absent"
既卸载了挂载点,也会修改etc/fstab里的文件内容