ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作

时间:2024-03-26 11:25:11

blockinfile模块详解

blockinfile模块可以帮助我们在指定的文件中插入"一段文本",这段文本是被标记过的,换句话说就是,我们在这段文本.上做了记号,以便在以后的操作中可以通过"标记"找到这段文本,然后修改或者删除它

path参数:必须参数,指定要操作的文件。
block参数:此参数用于指定我们想要操作的那"一段文本,此参数有一个别名叫"content",使用content或block的作用是相同的
marker参数:假如我们想要在指定文件中插入一段文本,ansible会自动为这段文本添加两个标记,一个开始标记,一个结束标记,默认情况下,开始标记为# BEGIN ANSIBLE MANAGED BLOCK,结束标记为# END ANSIBLE MANAGED BLOCK,我们可以使用marker,参数自定义"标记",比如,marker=#{ mark}test这样设置以后,开始标记变成了# BEGIN test,结束标记变成了# END test,没错, {mark}会自动被替换成开始标记和结束标记中的BEGIN和END,我们也可以插入很多段文本,为不同的段落添加不同的标记,下次通过对应的标记即可找到对应的段落
state参数: state参数有两个可选值,present与absent,默认情况下,我们会将指定的一段文本"插入"到文件中,如果对应的文件中已经存在对应标记的文本,状认会更新对应段落,在执行插入操作或更新操作时,state的值为present,默认值就是present, 如果对应的文件中已经存在对应标记的文本并且将state的值设置为absent,则表示从文件中删除对应标记的段落
insertafter参数:在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的后面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为EOF,表示将文本插入到文档末尾.
insertbefore参数:在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的前面, 可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的前面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设为BOF,表示将文本插入到文档开头。
backup参数:是否在修改文件之前对文件进行备份。
create参数:当要操作的文件并不存在时,是否创建对应的文件

(1)拷贝一个文件到实验目录
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(2)在文件末尾添加内容
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
自定义标记
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
再次执行
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
改变添加的内容时
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(3)删除添加自定义的内容

ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(4)在文件开头添加内容
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(5)匹配正则表达式添加内容
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(6)标记不变,改变标记里面的内容并备份
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(7)创建不存在的文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作

lineinfile模块详解

我们可以借助lineinfile模块,确保"某一行文本"存在于指定的文件中,或者确保从文件中删除指定的"文本" (即确保指定的文本不存在于文件中),还可以根据正则表达式,替换"某一行文本"。

path参数:必须参数,指定要操作的文件。
line参数:使用此参数指定文本内容。
regexp参数:使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
state参数:当想要删除对应的文本时,需要将state参数的值设置为absent, absent为缺席之意,表示删除, .state的积认值为present
insertafter参数:借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF,如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾
insertbefore参数:借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值 可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾
backup参数:是否在修改文件之前对文件进行备份。
create参数:当要操作的文件并不存在时,是否创建对应的文件。

(1)在远程主机上写一个实验文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(2)如果文件内容有nice man则不变,如果没有则添加到文件末尾

ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(3)替换
使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(4)删除
当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
删除以line开头的行
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
查看
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作

find模块详解

find模块可以班帮助我们再远程主机中查找符合条件的文件,就像find命令-样

paths参数:必须参数,指定在哪个目录中查找文件,可以指定多个路径,路径间用逗号隔开,此参数有别名,使用别名path或者别名name可以代替paths。
recurse参数:默认情况下,只会在指定的目录中查找文件,也就是说,如果目录中还包含目录,ansible并不会递归的进入子目录查找对应文件,如果想要递归的查找文件,需要使用recurse参数,当recurse参数设置为yes时,表示在指定目录中递归的查找文件。
hidden参数:默认情况下,隐藏文件会被忽略,当hidden参数的值设置为yes时, 才会查找隐藏文件。
file_ type参数:状认情 况下,ansible只会根据条件查找"文件",并不会查找"目录"或"软链接"等文件类型,如果想要指定查找的文件类型,可以通过file_ type指定文件类型,可指定的文件类型有any、directory、 file、 link 四种。
patterns参数:使用此参数指定需要查找的文件名称,支持使用shell (比如通配符)或者正则表达式去匹配文件名称,默认情况下,使用shell匹配对应的文件名,如果想要使用python的正则去匹配文件名,需要将use_ regex参数的值设置为yes。
use_ regex参数:默认情况下,find模块不会使用正则表达式去解析patterns参数中对应的内容,当use_ regex设置为yes时,表示使用python正则解析patterns参数中的表达式,否则,使用glob通配符解析patterns参数中的表达式。
contains参数:使用此参数可以根据文章内容查找文件,此参数的值为一个正则表达式,find模块会根据对应的正则表达式匹配文件内容。
age参数:使用此参数可以根据时间范围查找文件,默认以文件的mtime为准与指定的时间进行对比,比如,如果想要查找mtime在3天之前的文件,那么可以设置age=3d,如果想要查找mtime在3天以内的文件,可以设置tage=-3d,这里所说的3天是按照当前时间往前推3天,可以使用的单位有秒(s)、分(m)、 时(h)、天(d)、 星期(w)。
age_ stamp参数:文件的时间属性中有三个时间种类,atime、ctime、 mtime, 当我们根据时间范围查找文件时,可以指定以哪个时间种类为准,当根据时间查找文件时,默认以mtime为准。
size参数:使用此参数可以根据文件大小查找文件,比如,如果想要查找大于3M的文件,那么可以设置size=3m,如果想要查找小于50k的文件,可以设置size=-50k,可以使用的单位有t、g、m、k、b。
get_ checksum参数:当有符合查找条件的文件被找到时,会同时返回对应文件的sha1校验码,如果要查找的文件比较大,那么生成校验码的时间会比较长

(1)根据文章内容查找文件
在远程主机写一个文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
在ansible主机查找
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(2)递归查找文件
在远程主机再写一个文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
在ansible主机查找
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(3)查找隐藏文件
远程主机建立隐藏文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
在ansible主机查找以.sh结尾的文件包括隐藏文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(4)查找所有类型包括隐藏文件
远程主机建立隐藏目录
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
ansible主机查找
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作

(5)正则表达式查找
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(6)查找四天以内的文件
默认为mtime
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(7)查找atime在两周以内的文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(8)查找大于2g的文件
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作
(9)查找文件并返回sha1验证码
ansible(五)常用模块(blockinfile,lineinfile,find)之文件操作