一、unarchive模块
该unarchive模块将解压缩一个存档,默认情况下,它将在解包之前将源文件从本地系统复制到目标
dest #远程绝对路径,档案应该被解压缩
src #指定源
exclude #要排除的文件或目录的列表。
creates #一个文件名,当它已经存在时,这个步骤将不会被运行。
remote_src: #设置为“是”表示压缩文件已在远程计算机上,而不是Ansible的本地
举例:
将主控端的压缩包解压到被控端:
# ansible web1 -m unarchive -a 'src=/usr/local/src/jdk-8u311-linux-x64.tar.gz dest=/tmp/'
压缩包在被控端:
# ansible web1 -m unarchive -a 'src=/usr/local/src/jdk-8u311-linux-x64.tar.gz dest=/tmp/ remote_src=yes'
解压包里需要删除的文件用逗号隔开:
# ansible web1 -m unarchive -a 'src=/usr/local/src/jdk-8u311-linux-x64.tar.gz dest=/tmp/ remote_src=yes exclude=javafx-src.zip,jmc.txt'
二、archive模块
压缩
path #必须参数,远程主机上需要被打包压缩的源文件/目录
dest #打包压缩后的包文件路径(包文件的父目录必须存在);如果包文件已存在,则会被覆盖
format #指定压缩类型,包括: bz2、gz(默认)、tar、xz、zip
remove=yes|no #是否删除源文件
owner #指定文件所属人
mode #指定文件权限
举例:
# ansible web1 -m archive -a 'path=/tmp dest=/root/all.tar.gz format=gz'
三、selinux模块
管理远端主机的 SELINUX 防火墙
state # Selinux模式:enforcing、permissive、disabled
policy # 开启seliux需要加上这个参数targeted
举例:
关闭selinux:
# ansible web1 -m selinux -a 'state=disabled'
开启selinux:
# ansible web1 -m selinux -a 'state=permissive policy=targeted'
四、firewalld模块(部分)
防火墙
service # 要添加/从防火墙中删除/删除的服务的名称
permanent # 该配置是否在正在运行的防火墙配置中,或者在重新启动时仍然存在
immediate # 如果将此配置设置为永久的,则应立即应用此配置
port # 需要开放的端口,例如:80/tcp 80/udp
state: · disabled # 关闭
· enabled # 开启
举例:
通过service模块把防火墙打开
# ansible web1 -m service -a "name=firewalld state=started"
指定http服务通过防火墙
# ansible web1 -m firewalld -a 'service=http permanent=yes immediate=yes state=enabled'
关闭
# ansible web1 -m firewalld -a 'service=http permanent=yes immediate=yes state=disabled'
指定开放端口
# ansible web1 -m firewalld -a 'port=80/tcp permanent=yes immediate=yes state=enabled'
关闭
# ansible web1 -m firewalld -a 'port=80/tcp permanent=yes immediate=yes state=disabled'
五、lineinfile模块
功能有点类似sed,对文件的行替换、插入、删除
替换/插入:如果有重复的,都是匹配最后一个
如果不加backrefs项, 替换/插入如无匹配者,则将line所指定的行插入到文件的末尾
删除:如果有重复的,全部删除
path/dest #目标文件绝对路径+文件名,必须参数
line #替换/插入的内容
regexp #待匹配内容
insertbefore #匹配行前面插入
insertafter #匹配行后面插入
state #删除匹配行,需要将值设为absent,默认值present。
backup #是否在修改文件之前对文件进行备份。 yes/no
create #当要操作的文件并不存在时,是否创建对应的文件。yes/no
backrefs:yes/no #默认为no
1.backrefs为no时,如果没有匹配,则添加一行line。如果匹配了,则把匹配内容替被换为line内容。
2.backrefs为yes时,如果没有匹配,则文件保持不变。如果匹配了,把匹配内容替被换为line内容。
举例:
# vim /tmp/a.txt
hdauwhcacineaocvne
55555566666666666
hello world
2222222223333333
&……&%%……¥%¥*
中国人不骗中国人
备份源文件:
# ansible web1 -m lineinfile -a "path=/tmp/a.txt backup=yes line=nihao"
替换整行:
# ansible web1 -m lineinfile -a "path=/tmp/a.txt regexp='&……&%%……¥%¥*' line='已经被我替换啦'"
在匹配行前面插入:
# ansible web1 -m lineinfile -a "path=/tmp/a.txt line='在你的前面咯' insertbefore='已经被我替换啦'"
在匹配行后面插入:
# ansible web1 -m lineinfile -a "path=/tmp/a.txt line='在你的后面咯' insertafter='已经被我替换啦'"
删除匹配行:
# ansible web1 -m lineinfile -a "path=/tmp/a.txt regexp='hdauwhcacineaocvne' state=absent"
没有匹配行就在最末端添加一行:
# ansible web1 -m lineinfile -a "path=/tmp/a.txt regexp='夏洛特烦恼' line='我没有匹配项'"
在楼上的基础上添加backrefs: yes,则不会在文末追加:
# ansible web1 -m lineinfile -a "path=/tmp/a.txt regexp='匹配到你了吗' line='我不会出现哦' backrefs=yes"
新建文件:
# ansible web1 -m lineinfile -a "path=/tmp/aa.txt create=yes line='我是新文件'"
六、blockinfile模块
在指定文件中插入一段"文本",这段文本是被标记的,以便于我们后续通过标记找到这段文本
path #文件路径
block #指定要插入标记内的文本
marker #假如我们想要在指定的文件中插入一段文本,ansible会自动为这段文本添加2个标记,一个开始标记,一个结束标记;
默认情况下,开始标记为:# BEGIN ANSIBLE MANAGED BLOCK,结束标记为# END ANSIBLE MANAGED BLOCK
insertbefore #如果指定,文本将插入到最后一次匹配项的前面,也就是匹配项的里面
insertafter #如果指定,文本将插入到最后一次匹配项的后面,也就是匹配项的后面
state #可选present或absent,默认为将指定的文本插入到文件中,如果文件中存在该文本,则会更新对应的段落,
如果为absent,则删除对应的段落
create #如果文件不存在,则创建新文件
backup #是否备份文件,默认为no,如果为yes,被控端存在同名文件就会生成备份
group #属组
owner #属主
mode #权限
举例:
创建文件并做标记:
# ansible web1 -m blockinfile -a "path=/tmp/a.txt block='this is a test' create=yes"
自定义标记:
# ansible web1 -m blockinfile -a "path=/tmp/a.txt block='this is a test1' marker='#{mark} yihao'"
更改标记位置的内容:
# ansible web1 -m blockinfile -a "path=/tmp/a.txt block='this is a test2\nthis is a test3' marker='#{mark} yihao'"
删除标记位置的内容:
# ansible web1 -m blockinfile -a "path=/tmp/a.txt marker='#{mark} yihao' state=absent"
将标记的内容放在最前面:
# ansible web1 -m blockinfile -a "path=/tmp/a.txt block='this is a test4' marker='#{mark} sihao' insertbefore=BOF"
还可以使用正则匹配的方式:
# ansible web1 -m blockinfile -a "path=/tmp/a.txt block='this is a test5' marker='#{mark} wuhao' insertbefore=sihao"
(如果使用insertbefore作为正则匹配,就会将this is a test5包含到sihao的中间,建议使用insertafter去匹配,会放在匹配项的后面)
# ansible web1 -m blockinfile -a "path=/tmp/a.txt block='this is a test6' marker='#{mark} liuhao' insertafter=sihao"
扩展:
zip
tar
.rar --windows 专属
打包:把多个文件放到一块,大小不发生改变
压缩
1、节省磁盘空间
2、节省网络带宽、加快传输速度
linux的文件跟后缀没有关系
主控端和被控端都进行安装
# yum install -y xz bzip2 gzip zip unzip
zip
压缩:
# yum install zip -y //安装命令
语法: zip [选项] 压缩包名 需要压缩文件列表
选项:
-r // 压缩目录
解压:
# yum install unzip -y //安装解压命令
语法: unzip 压缩包名 【选项-d指定解压路径】
选项:
-d //解压到哪,一般后面接目录
tar其他参数 ---归档