一、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
打包/压缩语法:
# tar   选项   包名 文件列表

解包/解压语法:
# tar 选项 包名 文件列表
 
选项:
-c //创建归档
-x //解压
-f //必须选项,后接压缩包名字
-xf //后接包名,必须选项
-tf //查询包中有哪些文件
-rf //往包中追加文件,不适用压缩包
-czf //通过gzip压缩 xxx.tar.gz
-cjf //通过bzip2压缩 xxx.tar.bz2   //yum install bzip2 -y 需要安装该程序
-cJf //通过xz压缩 xxx.tar.xz
-caf  //通过压缩包后缀,自动选择程序进行压缩,后缀一定要写对
-C  //解压时,指定解压目录
 
====   打包,压缩=====
# tar -czf etc1.tar.gz /etc      // -c打包    -z 调用gzip来进行压缩 -f 压缩包名称    xxx.tar被打包  xxx.gz被压缩
# tar -cjf etc2.tar.bz2 /etc     // -j 调用bzip2来进行压缩,前提要有bzip2  ,yum install -y bzip2
# tar -cJf etc3.tar.xz /etc      // -J 调用yum install -y xz
 
ll -h                              // 长格式显示目录下文件的大小
du -sh /*                     //  文件或者目录的大小
file 文件或者目录        //  查看文件属性
 
===== 解压 ====
# tar -xzf etc1.tar.gz 
# tar -xjf etc1.tar.bzip2 
# tar -xJf etc1.tar.xz 
 
# tar -xf etc1.tar.gz      //可以不指定解压命令,tar会自行判断,记住这个就好了
 
-v   //显示过程
-C  //指定解压到哪里
# tar -xf etc1.tar.gz -C /tmp
 
-----------------------------------------------------------
 
正常情况下zip>gzip>bzip2>xz,越往后压缩越厉害
 
----------------------------------------------------------------------------------------

tar其他参数    ---归档
# tar -cvf etc.tar /etc 
 
-t      查看包里有哪些文件
# tar -tf etc.tar
 
-r     往包里面追加文件,不适用于压缩
# touch zzz.txt
# tar -rf etc.tar zzz.txt
# tar -tf etc.tar
 
-C     指定解压路径