摘要

该模块用于从一个文件中搜索一行,确保该行存在或删除该行。lineinfile模块主要用于改变一个文件的一行。如果想要改变文件中相似的多行,可以使用replace模块。如果想要插入/更新/删除一个行块,可以使用blockinfile模块。其他情形,可以使用copytemplate模块。


常用选项


例子:

下面是来自于官方文档的例子:

# 将 /etc/selinux/config 文件中所有匹配 ^SELINUX= 正则表达式的行中的最后一行使用 SELINUX=enforcing 替换;如果regexp不匹配文件中的任何一行,则将line所指定的行插入到文件的末尾 
- lineinfile: dest=/etc/selinux/config regexp=^SELINUX= line=SELINUX=enforcing

# 将 /etc/sudoers 文件中,所有匹配 ^%wheel 的行删除
- lineinfile: dest=/etc/sudoers state=absent regexp="^%wheel"

# 将 /etc/hosts 文件中,所有匹配 ^127\.0\.0\.1 正则表达式的行中的最后一行,替换成 127.0.0.1 localhost,当 ^127\.0\.0\.1 不匹配文件中的任何一行的时候,则将line所指定的行插入到文件的末尾。并将文件的属主设置成root,属组设置成root,将文件的权限设置为0644。
- lineinfile: dest=/etc/hosts regexp='^127\.0\.0\.1' line='127.0.0.1 localhost' owner=root group=root mode=0644

- lineinfile: dest=/etc/httpd/conf/httpd.conf regexp="^Listen " insertafter="^#Listen " line="Listen 8080"

- lineinfile: dest=/etc/services regexp="^# port for http" insertbefore="^www.*80/tcp" line="# port for http by default"

# Add a line to a file if it does not exist, without passing regexp
- lineinfile: dest=/tmp/testfile line="192.168.1.99 foo.lab.net foo"

# Fully quoted because of the ': ' on the line. See the Gotchas in the YAML docs.
- lineinfile: "dest=/etc/sudoers state=present regexp='^%wheel' line='%wheel ALL=(ALL) NOPASSWD: ALL'"

- lineinfile: dest=/opt/jboss-as/bin/standalone.conf regexp='^(.*)Xms(\d+)m(.*)$' line='\1Xms${xms}m\3' backrefs=yes

# Validate the sudoers file before saving
- lineinfile: dest=/etc/sudoers state=present regexp='^%ADMIN ALL\=' line='%ADMIN ALL=(ALL) NOPASSWD:ALL' validate='visudo -cf %s'

说明