linux企业实战 --ansible常用模块之文件操作(file & blockinfile & lineinfile)

一、file 模块

file模块可以帮助我们完成一些对文件的基本操作, 比如:创建文件或目录、删除文件或目录、修改文件权限等

1. 模块参数

参数用法
path必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也可以
state此参数非常灵活,此参数对应的值需要根据情况设定,比如,当我们需要在远程主机中创建一个目录的时候,我们需要使用path参数指定对应的目录路径。假设:我想要在远程主机上创建/testdir/a/b目录,那么我则需要设置path=/testdir/a/b,但是,我们无法从"/testdir/a/b"这个路径看出b是一个文件还是一个目录,ansible也同样无法单单从一个字符串就知道你要创建文件还是目录。所以,我们需要通过state参数进行说明,当我们想要创建的/testdir/a/b是一个目录时,需要将state的值设置为directory,"directory"为目录之意, 当它与path结合,ansible就能知道我们要操作的目标是一个目录,同理,当我们想要操作的/testdir/a/b是一个文件时,则需要将state的值设置为touch,当我们想要创建软链接文件时,需将state设为link,想要创建硬链接文件时,需要将state设置为hard,当我们想要删除一个文件时(删除时不用区分目标是文件、目录、还是链接),则需要将state的值设置为absent,“absent” 为缺席之意,当我们想让操作的目标"缺席"时,就表示我们想要删除目标。
src当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须指明软链或硬链链接的哪个文件,通过src参数即可指定链接源
force当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,表示强制创建链接文件,不过强制创建链接文件分为两种情况:情况一:当你要创建的链接文件指向的源文件并不存在时,使用此参数,可以先强制创建出链接文件。情况二:当你要创建链接文件的目录中已经存在与链接文件同名的文件时,将force设置为yes,会将同名文件覆盖为链接文件,相当于删除同名文件,创建链接文件。情况三:当你要创建链接文件的目录中已经存在与链接文件同名的文件,并且链接文件指向的源文件也不存在,这时会强制替换同名文件为链接文件。
owner用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报错。
group用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。
mode用于指定被操作文件的权限,比如,如果想要将文件权限设置t为rw-r-x—,则可以使用mode=650进行设置,或者使用mode=0650,效果也是相同的,如果你想要设置特殊权限,比如为二进制文件设置suid,则可以使用mode=4700
recurse当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性

2. 应用

  1. 在目标主机建立目录然后在ansible主机创建文件

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

再次执行上述命令会改变文件的时间戳!!!

在这里插入图片描述
在这里插入图片描述

  1. 创建目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 软连接

在这里插入图片描述
在这里插入图片描述

  1. 硬连接

在这里插入图片描述
在这里插入图片描述

  1. force参数

在这里插入图片描述在这里插入图片描述

  1. 删除远程主机的文件

在这里插入图片描述
在这里插入图片描述

  1. 创建文件属主文件

在这里插入图片描述在这里插入图片描述

  1. 创建文件属组

在这里插入图片描述
在这里插入图片描述

当文件存在时再次执行会改变时间戳!!!

在这里插入图片描述
在这里插入图片描述

  1. 创建属主/组的目录

在这里插入图片描述
在这里插入图片描述

  1. 改权限

可以改变原来存在的文件和目录,也可改变新建的

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  1. 递归创建目录

在这里插入图片描述
在这里插入图片描述

二、blockinfile 模块

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

1. 模块参数

参数用法
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,我们也可以插入很多段文本,为不同的段落添加不同的标记,下次通过对应的标记即可找到对应的段落
statestate参数有两个可选值,present与absent,默认情况下,我们会将指定的一段文本"插入"到文件中,如果对应的文件中已经存在对应标记的文本,状认会更新对应段落,在执行插入操作或更新操作时,state的值为present,默认值就是present, 如果对应的文件中已经存在对应标记的文本并且将state的值设置为absent,则表示从文件中删除对应标记的段落
insertafter在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的后面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为EOF,表示将文本插入到文档末尾.
insertbefore在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的前面, 可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的前面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设为BOF,表示将文本插入到文档开头。
backup是否在修改文件之前对文件进行备份。
create当要操作的文件并不存在时,是否创建对应的文件

2. 应用

  1. 在文件末尾添加内容

在这里插入图片描述在这里插入图片描述

  1. 自定义标记

在这里插入图片描述在这里插入图片描述
再次执行

在这里插入图片描述

  1. 改变添加的内容时

在这里插入图片描述在这里插入图片描述

  1. 删除添加自定义的内容 --> 方式一,block=“ ”

在这里插入图片描述
在这里插入图片描述

  1. 删除添加自定义的内容 --> 方式二 ,state=absent

在这里插入图片描述

  1. 在文件开头添加内容

在这里插入图片描述在这里插入图片描述

  1. 匹配正则表达式添加内容

在这里插入图片描述

  1. 在文件末尾添加内容

在这里插入图片描述在这里插入图片描述

  1. 在文件指定位置插入内容

在这里插入图片描述在这里插入图片描述

  1. 标记不变,改变标记里面的内容并备份

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  1. 创建不存在的文件,并插入内容

在这里插入图片描述

在这里插入图片描述

三、lineinfile 模块

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

1. 模块参数

参数用法
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当要操作的文件并不存在时,是否创建对应的文件。

2. 应用

  1. 在远程主机中所指定的文件插入内容

在这里插入图片描述
在这里插入图片描述

  1. 替换

使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换
在这里插入图片描述
在这里插入图片描述

  1. 删除

当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值