ansible的lineinfile与blockinfile模块

更新时间:2023-05-30 03:48:14 阅读: 评论:0

ansible的lineinfile与blockinfile模块
⼀、lineinfile模块可以确保某⼀⾏⽂本存在于指定的⽂件中,或者确保从⽂件中删除指定的⽂本,还可以根据正则表达式替换某⼀⾏⽂本。下⾯罗列⼀下lineinfile模块的参数:path:必须参数,指定要操作的⽂件
line:⽤来指定⽂本内容
大浦乡村世界
regexp:使⽤正则表达式匹配对应的⾏,当替换⽂本时,如果有多⾏⽂本都能匹配,则只有最后⾯被匹配的⾏才会被替换,当删除⽂本时,如果有多⾏⽂本被匹配,那么所有匹配⾏都将被删除。
state:当想要删除对应的⽂本时,需要将state参数的值设置为abnt,默认为prent
backrefs:默认情况下,当根据正则替换⽂本时,即使regexp参数中的正则存在分组,再line参数中也不能对正则中的分组⾏进⾏引⽤,除⾮将backrefs参数的值设置为
yes,backrefs=yes表⽰开启后向引⽤,这样,line参数中就能对regexp参数中的分组进⾏后向引⽤了。backrefs=yes除了能开启后向引⽤功能,还有另⼀个作⽤,默认情况下,当使⽤正则表达式替换对应⾏时,同时设置了backrefs=yes,那么当正则没有匹配到任何的⾏时,则不会对⽂件进⾏任何操作,相当于保持⽂件不变。
inrtafter:借助inrtafter可以将⽂本插⼊到指定的⾏后,inrtafter参数的值可以设置为EOF或者正则表达式,默认为EOF,如果将inrtafter的值设置为正则表达式,表⽰将⽂本插⼊到匹配到正则的⾏后,如果正则没有匹配到任何⾏,则插⼊到⽂件末尾,当使⽤backrefs参数时,此参数将会被忽略。
宫川英男inrtbefore:将⽂本插⼊到指定⾏之前,inrtbefore的值可以设置为BOF或者正则表达式,BOF为Begin Of File,表⽰插⼊到⽂档开头,默认BOF,如果将inrtbefore设置为正则表达式,表⽰将⽂本插⼊到匹配到正则的⾏之前,如果正则没有匹配到任何⾏,则插⼊到⽂件末尾,当使⽤backrefs参数时,此参数被忽略。
backup:是否在修改⽂件之前对⽂件进⾏备份。默认为fal
create:当要操作的⽂件并不存在时,是否创建对应的⽂件。默认为fal
⽰例⽂件:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of the three values:
#    enforcing - SELinux curity policy is enforced.
#    permissive - SELinux prints warnings instead of enforcing.
#    disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#    targeted - Targeted process are protected,
#    minimum - Modification of targeted policy. Only lected process are protected.
主要工作简历
#    mls - Multi Level Security protection.
SELINUXTYPE=targeted
⽰例⼀:确保指定的⼀⾏⽂本存在于⽂件中,如果存在,则不做任何操作,如果不存在,默认在⽂件末尾加⼊:
⽰例⼆:根据正则表达式替换某⼀⾏,如果多⾏匹配,那么只有最后⼀⾏才会被替换,默认如果没有匹配到任何⾏,那么line中的内容会被添加到⽂件末尾。
原⽂件则变为:
⽰例三:根据正则表达式替换某⼀⾏,如果多⾏被匹配,那么只有最后⼀⾏才会被替换;如果⽆任何⾏被匹配,那么对⽂件不进⾏任何操作:
⽰例四:根据正则表达式删除匹配⾏,如果多⾏匹配,那么删除所有匹配⾏:
⽰例五:根据line参数的内容删除⾏,如果⽂件中有多⾏匹配,那么这些相同的⾏都会被删除
后向引⽤:默认情况下,lineinfile模块是不⽀持后向引⽤的,关于后向引⽤概念,可参考/archives/1952。如果将backrefs设置为yes,表⽰开启后向引⽤。
⽰例原⽂件:
Hello every one
安琪拉铭文
Hello my dear
Who is say Hello
Hello body is Hello boy
Hello dear is Hello god
⽰例六:将⽰例原⽂件中的第⼆⾏替换为Hello
替换后的⽂件:
⽰例七:将⽰例原⽂件中的第五⾏替换为Hello god
替换后的⽂件:
⼆、blockinfile模块可以在指定的⽂件中插⼊⼀段⽂本,这段⽂本是被标记过的,以便在以后的操作中可以通过标记找到这段⽂本,然后修改或者删除这段⽂本。参数如下:path:必须参数,指定要操作的⽂件
block:⽤于指定⼀段⽂本,与content参数相同
marker:⽤于指定标记符,即⼀个开始标记⼀个结束标记;默认开始标记为# BEGIN ANSIBLE MANAGED BLOCK,结束标记为# END ANSIBLE MANAGED BLOCK,使⽤marker⾃定义标记。{mark}为内置的BEGIN和END
state:有两个可选值,prent和abnt,如果对应的⽂件中已经存在对应标记的⽂本,默认会更新对应段落,在执⾏插⼊操作或更新操作时,state的值为prent,默认值即为prent;如果对应的⽂件中已经存在对应标记的⽂本并且将state的值设置为abnt,则表⽰从⽂件中删除对应标记的段落。
inrtafter:默认值为EOF,即在⽂件的末尾插⼊⽂本,使⽤此参数可在指定的⾏后插⼊。如果多⾏⽂本都能够匹配对应的正则,则以最后⼀个满⾜条件的⾏为准inrtbefore:默认值为BOF,即在⽂件的开头插⼊⽂本。如果多⾏都能够匹配对应的正则,则以最后⼀个满⾜条件的⾏为准
backup:是否在修改⽂件之前对⽂件进⾏备份
create:当⽬标⽂件不存在时,是否创建
⽰例源⽂件:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of the three values:
#    enforcing - SELinux curity policy is enforced.
#    permissive - SELinux prints warnings instead of enforcing.
#    disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
#    targeted - Targeted process are protected,
#    minimum - Modification of targeted policy. Only lected process are protected.
#    mls - Multi Level Security protection.
SELINUXTYPE=targeted
⽰例⼀:添加⽂本块
心与心修改后的⽂件:
⽰例⼆:⾃定义标记符
修改后的⽂件:
真诚的名言名句⽰例三:修改⽂件中的标记内容
郑州有什么好玩的地方
修改后的⽂件:
⽰例四:删除⽂件中的标记块
修改后的⽂件:
PS:当state为abnt时,参数block将失效,即使指定了,并且block中的内容在⽬标⽂件中匹配不到,也会删除匹配到的marker,所以,在匹配的时候,是以marker进⾏匹配的,上例中也是反应的淋漓尽致。
⽰例五:在指定的⾏前插⼊block,多⾏匹配则以最后匹配⾏为准
修改后的⽂件:
封妻荫子

本文发布于:2023-05-30 03:48:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/810963.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:匹配   标记   默认   对应   正则   参数   删除
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图