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)拷贝一个文件到实验目录
(2)在文件末尾添加内容
查看
自定义标记
查看
再次执行
改变添加的内容时
(3)删除添加自定义的内容
查看
(4)在文件开头添加内容
查看
(5)匹配正则表达式添加内容
查看
(6)标记不变,改变标记里面的内容并备份
查看
(7)创建不存在的文件
查看
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)在远程主机上写一个实验文件
(2)如果文件内容有nice man则不变,如果没有则添加到文件末尾
查看
(3)替换
使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换
查看
(4)删除
当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
删除以line开头的行
查看
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主机查找
(2)递归查找文件
在远程主机再写一个文件
在ansible主机查找
(3)查找隐藏文件
远程主机建立隐藏文件
在ansible主机查找以.sh结尾的文件包括隐藏文件
(4)查找所有类型包括隐藏文件
远程主机建立隐藏目录
ansible主机查找
(5)正则表达式查找
(6)查找四天以内的文件
默认为mtime
(7)查找atime在两周以内的文件
(8)查找大于2g的文件
(9)查找文件并返回sha1验证码