• ansible-lineinfile模块


    lineinfile:文件内容修改、在某行前面添加一行、在某行后面添加一行、删除某一行、末尾加入一行、替换或添加某一行

    path参数 :必须参数,指定要操作的文件。

    line参数 : 使用此参数指定文本内容。

    regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。

    state参数:当想要删除对应的文本时,需要将state参数的值设置为absent,absent为缺席之意,表示删除,state的默认值为present。

    backrefs参数:默认情况下,当根据正则替换文本时,即使regexp参数中的正则存在分组,在line参数中也不能对正则中的分组进行引用,除非将backrefs参数的值设置为yes。backrefs=yes表示开启后向引用,这样,line参数中就能对regexp参数中的分组进行后向引用了,这样说不太容易明白,可以参考后面的示例命令理解。backrefs=yes除了能够开启后向引用功能,还有另一个作用,默认情况下,当使用正则表达式替换对应行时,如果正则没有匹配到任何的行,那么line对应的内容会被插入到文本的末尾,不过,如果使用了backrefs=yes,情况就不一样了,当使用正则表达式替换对应行时,同时设置了backrefs=yes,那么当正则没有匹配到任何的行时,则不会对文件进行任何操作,相当于保持原文件不变。

    insertafter参数:借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF,如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。

    insertbefore参数:借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。

    backup参数:是否在修改文件之前对文件进行备份。

    create参数 :当要操作的文件并不存在时,是否创建对应的文件。

    1、文件内容修改

    ansible 192.168.30.21 -m lineinfile -a "dest=/data/hosts regexp="^192.168.30.21" line="123456"" -b

    2、在指定行前面插入一行

    ansible 192.168.30.21 -m lineinfile -a "dest=/data/hosts insertbefore="^192.168.30.22" line="7890"" -b

    3、在末尾增肌一行

    ansible 192.168.30.21 -m lineinfile -a "dest=/data/hosts line='192.168.30.23   web03'" -b

    4、删除某一行

    ansible 192.168.30.21 -m lineinfile -a "dest=/data/hosts regexp='192.168.30.23(.*)' state=absent" -b

    5、替换某一行,如果不存在,则会在文本末尾添加

    ansible 192.168.30.21 -m lineinfile -a "dest=/data/hosts regexp='192.168.30.24(.*)' line='192.168.30.24   web05' state=present" -b

    6、playbook+with_items批量修改文件内容

    脚本:

    [dwchensenwen@vms20 script]$ cat lineinfile.yaml 
    ---
    - hosts: test
      remote_user: dwchensenwen
      become: yes
      become_method: sudo
      tasks:
      - name: Configuer hosts
        lineinfile: dest=/data/hosts regexp={{ item.regexp }} line={{ item.line }}
        with_items:
          - { regexp: "^123456", line: "192.168.30.21   web01" }
          - { regexp: "^7890", line: "192.168.30.22   web02" }

    运行结果:

  • 相关阅读:
    window.clipboardData(转载)
    动态添加样式(转载)
    IE6 IE7 FF的CSS Hack总结(转载)
    [轉貼] linux解壓 tar 命令
    [轉]用 snprintf / asprintf 取代不安全的 sprintf
    寫一個函數計算當參數為 n(n很大) 時的值 12+34+56+7……+n
    [轉]vi 與 vim 的指令整理
    MySQL和php採用UTF8的方法
    [轉]printf 引數說明
    [C] warning: ISO C90 forbids mixed declarations and code
  • 原文地址:https://www.cnblogs.com/mustark/p/11102923.html
Copyright © 2020-2023  润新知