ansible.builtin.win_lineinfile (v2.3.3.0-1) — module

Ensure a particular line is in a file, or replace an existing line using a back-referenced regular expression.

| "added in version" 2.0 of ansible.builtin"

Authors: Brian Lloyd <brian.d.lloyd@gmail.com>

preview | supported by community

Install Ansible via pip

Install with pip install ansible==2.3.3.0.post1

Description

This module will search a file for a line, and ensure that it is present or absent.

This is primarily useful when you want to change a single line in a file only.

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'
- win_lineinfile:
    path: C:\temp\example.conf
    regexp: '^name='
    line: 'name=JohnDoe'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- win_lineinfile:
    path: C:\temp\example.conf
    regexp: '^name='
    state: absent
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- win_lineinfile:
    path: C:\temp\example.conf
    regexp: '^127\.0\.0\.1'
    line: '127.0.0.1 localhost'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- win_lineinfile:
    path: C:\temp\httpd.conf
    regexp: '^Listen '
    insertafter: '^#Listen '
    line: Listen 8080
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- win_lineinfile:
    path: C:\temp\services
    regexp: '^# port for http'
    insertbefore: '^www.*80/tcp'
    line: '# port for http by default'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create file if it doesn't exist with a specific encoding
- win_lineinfile:
    path: C:\temp\utf16.txt
    create: yes
    encoding: utf-16
    line: This is a utf-16 encoded file
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Add a line to a file and ensure the resulting file uses unix line separators
- win_lineinfile:
    path: C:\temp\testfile.txt
    line: Line added to file
    newline: unix
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Update a line using backrefs
- win_lineinfile:
    path: C:\temp\example.conf
    backrefs: yes
    regexp: '(^name=)'
    line: '$1JohnDoe'

Inputs

    
line:
    description:
    - Required for C(state=present). The line to insert/replace into the file. If C(backrefs)
      is set, may contain backreferences that will get expanded with the C(regexp) capture
      groups if the regexp matches.
    required: false

path:
    aliases:
    - dest
    - destfile
    - name
    description:
    - The path of the file to modify.
    - Note that the Windows path delimiter C(\) must be escaped as C(\\) when the line
      is double quoted.
    - Before 2.3 this option was only usable as I(dest), I(destfile) and I(name).
    required: true

state:
    choices:
    - present
    - absent
    default: present
    description:
    - Whether the line should be there or not.
    required: false

backup:
    choices:
    - 'yes'
    - 'no'
    default: 'no'
    description:
    - Create a backup file including the timestamp information so you can get the original
      file back if you somehow clobbered it incorrectly.
    required: false

create:
    choices:
    - 'yes'
    - 'no'
    default: 'no'
    description:
    - Used with C(state=present). If specified, the file will be created if it does not
      already exist. By default it will fail if the file is missing.
    required: false

regexp:
    description:
    - The regular expression to look for in every line of the file. For C(state=present),
      the pattern to replace if found; only the last line found will be replaced. For
      C(state=absent), the pattern of the line to remove. Uses .NET compatible regular
      expressions; see U(https://msdn.microsoft.com/en-us/library/hs600312%28v=vs.110%29.aspx).
    required: false

newline:
    choices:
    - windows
    - unix
    default: windows
    description:
    - "Specifies the line separator style to use for the modified file. This defaults\
      \ to the windows line separator (C(\r\n)). Note that the indicated line separator\
      \ will be used for file output regardless of the original line separator that appears\
      \ in the input file."
    required: false

backrefs:
    choices:
    - 'yes'
    - 'no'
    default: 'no'
    description:
    - Used with C(state=present). If set, line can contain backreferences (both positional
      and named) that will get populated if the C(regexp) matches. This flag changes the
      operation of the module slightly; C(insertbefore) and C(insertafter) will be ignored,
      and if the C(regexp) doesn't match anywhere in the file, the file will be left unchanged.
    - If the C(regexp) does match, the last matching line will be replaced by the expanded
      line parameter.
    required: false

encoding:
    default: auto
    description:
    - Specifies the encoding of the source text file to operate on (and thus what the
      output encoding will be). The default of C(auto) will cause the module to auto-detect
      the encoding of the source file and ensure that the modified file is written with
      the same encoding.
    - An explicit encoding can be passed as a string that is a valid value to pass to
      the .NET framework System.Text.Encoding.GetEncoding() method - see U(https://msdn.microsoft.com/en-us/library/system.text.encoding%28v=vs.110%29.aspx).
    - This is mostly useful with C(create=yes) if you want to create a new file with a
      specific encoding. If C(create=yes) is specified without a specific encoding, the
      default encoding (UTF-8, no BOM) will be used.
    required: false

validate:
    default: None
    description:
    - Validation to run before copying into place. Use %s in the command to indicate the
      current file to validate.
    - The command is passed securely so shell features like expansion and pipes won't
      work.
    required: false

insertafter:
    choices:
    - EOF
    - '*regex*'
    default: EOF
    description:
    - Used with C(state=present). If specified, the line will be inserted after the last
      match of specified regular expression. A special value is available; C(EOF) for
      inserting the line at the end of the file.
    - If specified regular expression has no matches, EOF will be used instead. May not
      be used with C(backrefs).
    required: false

insertbefore:
    choices:
    - BOF
    - '*regex*'
    description:
    - Used with C(state=present). If specified, the line will be inserted before the last
      match of specified regular expression. A value is available; C(BOF) for inserting
      the line at the beginning of the file.
    - If specified regular expression has no matches, the line will be inserted at the
      end of the file. May not be used with C(backrefs).
    required: false