个性化阅读
专注于IT技术分析

ansible lineinfile模块

点击下载

lineinfile是Ansible工具箱中功能最强大的模块之一。 Ansible lineinfile模块用于插入行,修改,删除和替换现有行。

Ansible lineinfile模块可以节省你处理文件和修改运行内容的时间,例如在文件中添加新行或更新,在找到特定文本时替换文件中的行等等。

Ansible lineinfile提供了许多参数来快速完成任务。你还可以在修改前使用条件匹配行,并使用正则表达式删除。你可以使用backreference参数重新使用和修改匹配的行。

注意:Ansible lineinfile仅可用于处理文件中的一行。如果要替换多行,请替换模块,如果要插入,更新,请在文件使用blockinfile模块中删除一行行。

插入行

让我们看看如何在文件中不存在一行。你可以使用path(> Ansible 2.3)/ dest参数设置要修改的文件的路径。并使用line参数设置要插入的行。

下面的示例将“将行插入文件中”行写入文件“ remote_server.txt”。新行将添加到EOF。如果该行已存在,则将不会合并。

你还可以设置create参数,该参数表示如果文件不存在,则创建一个新文件。存在状态的默认值。

- hosts: loc
  tasks:
    - name: Ansible insert lineinfile 
      lineinfile:
        dest: /home/srcmini/remote_server.txt
        line: Inserting a line in a file.
        state: present
        create: yes

删除线

将状态参数设置为不存在或删除指定的行。该行的所有出现都将被删除。

- hosts: loc
  tasks:
    - name: Ansible lineinfile remove the line
      lineinfile:
        dest: /home/srcmini/remote_server.txt
        line: Removed lines.
        state: absent

替换或修改线

要修改行,你需要将Ansible backrefs参数与regexp参数一起使用。这应该与state = present一起使用。

如果正则表达式与任何行都不匹配,则文件不会更改。如果正则表达式匹配一行或多行,则最后匹配的行将被替换。 regexp中的分组元素已填充,可用于修改。

在下面的示例中,我们在一行上进行注释。通过将圆括号放在“ \ 1”内可以捕获整行。 ‘

你可以具有多个捕获,并使用’\ 1’,’\ 2’,’\ 3’等调用它们。

使用Ansible lineinfile backrefs注释一行

- name: Ansible lineinfile regexp replace the example
  lineinfile:
    dest: /etc/ansible/ansible.cfg
    regexp: '(inventory = /home/fedora/inventory.ini.*)'
    line: '#\1'
    backrefs: yes

使用lineinfile正则表达式取消注释行

- name: Ansible lineinfile backrefs example
  lineinfile:
    dest: /etc/ansible/ansible.cfg
    regexp: '#(inventory = /home/fedora/inventory.ini.*)'
    line: '\1'
    backrefs: yes

赞(0)
未经允许不得转载:srcmini » ansible lineinfile模块

评论 抢沙发

评论前必须登录!