lineinfile模块主要用于搜索匹配替换、插入:若匹配存在的行则替换行,若不存在则插入行

参数 必填 默认值 注解
dest yes 文件路径位置
insertafter no EOF(末行) 接正则表达式;定位到正则匹配所在的行的后一行
insertbefore no 接正则表达式;定位到正则匹配所在的行的前一行
regexp no 正则表达搜索匹配内容
line no 用来替换或者插入的行内容,行存在则替换,行不存在则在文本末尾插入行
mode no 对文件进行权限变更,如 mode=644,mode=g+x 等
group no 文件属组文件属主
owner no 文件属主
state no present state=absent 搜索匹配到的行删除
backup no backup=yes 修改前对文件进行备份
backrefs no

Ansible技术问答:http://linux.xyz/topic/Ansible

示例:

# 查找以’SELINUX=’开头的行,若存在则替换该行,不存在则在最后插入行 (关闭 selin
ux)
- lineinfile: dest=/etc/sysconfig/selinux regexp=’^SELINUX=’ line=’SELINUX=disabled’ backup=yes

# 配置用户的 sudo 权限
- lineinfile: dest=/etc/sudoers state=present regexp='^%wheel' line='%wheel ALL=(ALL) NOPASSWD: ALL'
# 在 Listen 所在的行的后面插入一行’Linster 8080’,插入前备份文件
- lineinfile: dest=/etc/httpd/conf/httpd.conf regexp="^Listen" insertafter="^#Listen" line="Listen 8080" owner=apache group=apache mode=0644 backup=yes

# 在’nameserver 8.8.8.8’这行前的一行进行正则匹配"^nameserver 8.8.4.4",如果能匹配成功,则以’nameserver 114.114.114.114’内容替换;若匹配不成功,则在‘nameserver 8.8.8.8’这行前插入’nameserver 114.114.114.114’
- lineinfile: dest=/etc/services regexp="^nameserver 8.8.4.4" insertbefore="^nameserver 8.8.8.8$" line="nameserver 114.114.114.114"

# 删除正则匹配成功所在的行
lineinfile: dest=/etc/hosts regexp=’^172.20.99.32 node1’ state=absent

# 正则匹配向后扩展示例
- lineinfile: dest=/opt/jboss-as/bin/standalone.conf regexp='^(.*)Xms(\d+)m(.*)$' line='\1Xms${xms}m\3' backrefs=yes