文章目录
Lineinfile模块
ansible
在使用sed
进行替换时,经常会遇到需要转义的问题,而且ansible
在遇到特殊符号进行替换时,存在问题,无法正常进行替换 。其实在ansible
自身提供了两个模块:ineinfile
模块和replace
模块,可以方便的进行替换功能:相当于
sed
,可以修改文件内容官网地址:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html
常用参数:
参数 | 选项/默认值 | 说明 |
---|---|---|
path/dest | 目标文件绝对路径+文件名,必须参数 | |
line | 替换/插入的内容 | |
regexp | 待匹配内容 | |
insertbefore | 匹配行前面插入 | |
insertafter | 匹配行面插入 | |
state | present / absent | 删除匹配行,需要将值设为 absent , 默认值 present |
backup | yes / no | 是否在修改文件之前对文件进行备份。 yes/no |
create | yes / no | 当要操作的文件并不存在时,是否创建对应的文件。yes/no |
backrefs | 常和正则表达一起使用,如果正则表达不匹配,不做任何改变,如果匹配则替换匹配的内容 | |
backrefs= | no | backrefs 为 no 时,如果没有匹配,则添加一行line。如果匹配了,则把匹配内容替被换为line内容 |
backrefs= | yes | backrefs 为 yes 时,如果没有匹配,则文件保持不变。如果匹配了,把匹配内容替被换为line内容。 |
示例:
- 将 # 开头的行全部删除
[root@master ~]# ansible dong -m lineinfile -a "dest=/root/test state=absent regexp='^#'"
- 修改匹配到的内容
这里有个疑问?如果匹配格式为 “aaa.bbb.ccc” 我想要匹配 “aaa” 并修改,要怎么操作?参考下面的
replace
模块
[root@master ~]# ansible dong -m lineinfile -a "path=/etc/selinux/config regexp='^SELINUX=' line='SELINUX=disabled'"