文章目录
Replace 模块
该模块有点类似于sed命令,主要也是基于正则进行匹配和替换
常用参数:
参数 | 说明 |
---|---|
path | 必须参数,指定要修改的文件,2.3版本之前,这个参数叫dest、destfile、name;现在这三个名称是path参数的别名 |
regexp | 必须参数,指定一个正则表达式,可以是python正则 |
replace | 替换regexp参数匹配到的字符串, |
owner | 结果文件或目录的所属用户名,相当于chown命令修改 |
group | 结果文件或目录的所属组名,相当于chown命令修改 |
mode | 结果文件或目录的权限,与chmod命令不一致的是,replace模块的mode参数需要添加前导零,以便ansible的YAML解析器知道它是八进制;1.8版本后可以设置为符号模式(u+rwx或u=rw),2.6版本后可以是特殊字符串(preserve),当设置为’preserve’时,文件将被赋予与源文件相同的权限。 |
others | 可以指定 file 模块的所有参数 |
encoding | 用于读取和写入文件的字符编码 |
before | 如果指定,则仅替换/删除此匹配之前的内容,可以和after参数结合使用 |
after | 如果指定,则仅替换/删除此匹配之后的内容,可以和before参数结合使用 |
attributes | 结果文件或目录的特殊属性,相当chattr,默认使用=运算符,指定文件或目录的某项属性 |
backup | 修改源文件前创建一个包含时间戳信息的备份文件 |
示例:
- 修改匹配到的内容
# 文件内容为 aaa.bbb.fff.vvv.fff.ggg 匹配 fff 并修改为 qqq
[root@master ~]# ansible dong -m replace -a "path=/root/test regexp='fff' replace='qqq'"
- 将文件内容注释
# 匹配到任意一个或多个开头的行增加注释
[root@master ~]# ansible dong -m replace -a "path=/root/passwd regexp='^(.*)' replace='#\1'"
# 取消注释
[root@master ~]# ansible dong -m replace -a "path=/root/passwd regexp='^#(.*)' replace='\1'"
# 匹配以 p 开头的后面有一个或者多个字符的行,并在前面添加 # 注释
[root@master ~]# ansible dong -m replace -a "path=/root/passwd regexp='^(p.*)' replace='#\1'"