1. lineinfile模块

功能:修改或删除文件内容,与系统中的 sed 命令类似;

主要参数如下:

参数 说明
path 指定要操作的文件
regexp 使用正则表达式匹配对应的行
line 修改为新的内容
insertafter 将文本插入到“指定的行”之后
insertbefore 将文本插入到“指定的行”之前
state 删除对应的文本时,需要state=absent
backrefs 1.支持后向引用、2.当未匹配到内容则不操作文件
backup 是否在修改文件之前对文件进行备份
create 当要操作的文件并不存在时,是否创建对应的文件
  • 示例一:将 SELINUX 修改为 disabled 状态;

    [root@xuzhichao ~]# ansible localhost -m lineinfile -a 'path=/etc/selinux/config regexp="^SELINUX" line="SELINUX=disabled"'
    
  • 示例二:为被控主机添加一个DNS地址:223.5.5.5

    [root@xuzhichao ~]# ansible NginxWebs -m lineinfile -a 'path=/etc/sysconfig/network-scripts/ifcfg-eth1 line="DNS2=223.5.5.5" insertafter="DNS1"'
    
  • 示例三:删除 /etc/sudoers 文件中 %wheel 开头的行;

    [root@xuzhichao ~]# ansible localhost -m lineinfile -a 'path=/etc/sudoers regexp='^%wheel' state=absent'
    
  • 示例四:修改默认 Apache 的端口为 8080 ,使用 insertafter

    [root@xuzhichao ~]# ansible localhost -m lineinfile -a 'path=/etc/httpd/conf/httpd.conf regexp='^Listen' line="Listen 8080" insertafter='^#Listen''