Nota

Este módulo es parte de ansible-base e incluido en todas las instalaciones de Ansible. En la mayoría de los casos, puede utilizar el nombre corto del módulo lineinfile incluso sin especificar el collections: palabra clave. A pesar de eso, le recomendamos que utilice el FQCN para facilitar la vinculación a la documentación del módulo y evitar conflictos con otras colecciones que puedan tener el mismo nombre de módulo.

Nuevo en la versión 0.7: de ansible.builtin

  • Sinopsis
  • Parámetros
  • Notas
  • Ver también
  • Ejemplos de

Sinopsis

  • Este módulo asegura que una línea en particular esté en un archivo, o reemplaza una línea existente usando una expresión regular con referencia inversa.
  • Esto es principalmente útil cuando desea cambiar una sola línea en un archivo solamente.
  • Ver el ansible.builtin.replace módulo si desea cambiar varias líneas similares o comprobar ansible.builtin.blockinfile si desea insertar / actualizar / eliminar un bloque de líneas en un archivo. Para otros casos, consulte la ansible.builtin.copy o ansible.builtin.template módulos.

Parámetros

Parámetro Opciones / Valores predeterminados Comentarios
atributoscuerda agregado en 2.3 de ansible.builtin Los atributos que debe tener el archivo o directorio resultante. Para obtener indicadores compatibles, consulte la página de manual para chattr en el sistema de destino Esta cadena debe contener los atributos en el mismo orden que el mostrado por lsattr.Los = El operador se asume como predeterminado, de lo contrario + o - los operadores deben incluirse en la cadena.
alias: attr
backrefsbooleano agregado en 1.1 de ansible.builtin
    Opciones:

  • no
Usado con state=present.Si está configurado, line puede contener referencias inversas (tanto posicionales como con nombre) que se completarán si el regexp Este parámetro cambia ligeramente el funcionamiento del módulo; insertbefore y insertafter será ignorado, y si el regexp no coincide en ninguna parte del archivo, el archivo no se modificará. regexp coincide, la última línea coincidente será reemplazada por el parámetro de línea expandida. search_string.
respaldobooleano
    Opciones:

  • no
Cree un archivo de respaldo que incluya la información de la marca de tiempo para que pueda recuperar el archivo original si de alguna manera lo golpeó incorrectamente.
crearbooleano
    Opciones:

  • no
Usado con state=present.Si se especifica, el archivo se creará si aún no existe. De forma predeterminada, fallará si falta el archivo.
primer partidobooleano agregado en 2.5 de ansible.builtin
    Opciones:

  • no
Usado con insertafter o insertbefore.Si está configurado, insertafter y insertbefore funcionará con la primera línea que coincida con la expresión regular dada.
grupocuerda Nombre del grupo que debería ser propietario del archivo / directorio, como se enviaría a chown.
insertar despuéscuerda
    Opciones:

  • EOF
  • * expresión regular *
Usado con state=present.Si se especifica, la línea se insertará después de la última coincidencia de la expresión regular especificada. Si se requiere la primera coincidencia, utilice (firstmatch = yes). Hay un valor especial disponible; EOF para insertar la línea al final del archivo. Si la expresión regular especificada no tiene coincidencias, se utilizará EOF en su lugar. insertbefore está configurado, valor predeterminado EOF será ignorado Si las expresiones regulares se pasan a ambos regexp y insertafter, insertafter solo se honra si no hay rival para regexp no se puede utilizar con backrefs o insertbefore.
insertar antescuerda agregado en 1.1 de ansible.builtin
    Opciones:

  • BOF
  • * expresión regular *
Usado con state=present.Si se especifica, la línea se insertará antes de la última coincidencia de la expresión regular especificada.Si se requiere la primera coincidencia, utilice firstmatch=yes.Un valor está disponible; BOF para insertar la línea al principio del archivo.Si la expresión regular especificada no tiene coincidencias, la línea se insertará al final del archivo.Si las expresiones regulares se pasan a ambos regexp y insertbefore, insertbefore solo se honra si no hay rival para regexp no se puede utilizar con backrefs o insertafter.
líneacuerda La línea para insertar / reemplazar en el archivo. state=present.Si backrefs está configurado, puede contener referencias inversas que se ampliarán con el regexp capturar grupos si la expresión regular coincide.
alias: valor
modocrudo Los permisos que debe tener el archivo o directorio resultante. / usr / bin / chmod recuerde que los modos son en realidad números octales. Debe agregar un cero a la izquierda para que el analizador YAML de Ansible sepa que es un número octal (como 0644 o 01777) o citarlo (como '644' o '1777') para que Ansible reciba una cadena y pueda hacer su propia conversión de cadena a número. Dar a Ansible un número sin seguir una de estas reglas terminará con un número decimal que tendrá resultados inesperados. A partir de Ansible 1.8, se puede especificar el modo como modo simbólico (por ejemplo, u+rwx o u=rw,g=r,o=r).Si mode no se especifica y el archivo de destino no existe, el predeterminado umask en el sistema se utilizará al configurar el modo para el archivo recién creado. mode no se especifica y el archivo de destino lo hace existe, se utilizará el modo del archivo existente. mode es la mejor manera de garantizar que los archivos se creen con los permisos correctos. Consulte CVE-2020-1736 para obtener más detalles.
otroscuerda Todos los argumentos aceptados por el ansible.builtin.file módulo también funciona aquí.
dueñocuerda Nombre del usuario que debería ser propietario del archivo / directorio, como se enviaría a chown.
senderosendero / requerido El archivo a modificar.Antes de Ansible 2.3 esta opción solo se podía usar como dest, destfile y nombre.
alias: dest, destfile, nombre
regexpcuerda agregado en 1.7 de ansible.builtin La expresión regular que se debe buscar en cada línea del archivo. state=present, el patrón a reemplazar si se encuentra. Solo se reemplazará la última línea encontrada. state=absent, el patrón de la (s) línea (s) para eliminar. Si la expresión regular no coincide, la línea se agregará al archivo de acuerdo con insertbefore o insertafter Cuando se modifica una línea, la expresión regular debería coincidir normalmente con el estado inicial de la línea y con su estado después del reemplazo por line para garantizar la idempotencia. Utiliza expresiones regulares de Python. Ver https://docs.python.org/3/library/re.html.
alias: regex
cadena de búsquedacuerda agregado en 2.11 de ansible.builtin La cadena literal a buscar en cada línea del archivo. Esto no tiene que coincidir con toda la línea. state=present, la línea a reemplazar si la cadena se encuentra en el archivo. Solo se reemplazará la última línea encontrada. state=absent, la (s) línea (s) para eliminar si la cadena está en la línea. Si la expresión literal no coincide, la línea se agregará al archivo de acuerdo con insertbefore o insertafter Configuración mutuamente exclusiva con backrefs y regexp.
selevelcuerda La parte de nivel del contexto del archivo SELinux. Este es el atributo MLS / MCS, a veces conocido como range.Cuando se establece en _default, usará el level parte de la póliza si está disponible.
serolacuerda El rol parte del contexto del archivo SELinux. _default, usará el role parte de la póliza si está disponible.
setypecuerda La parte de tipo del contexto del archivo SELinux. _default, usará el type parte de la póliza si está disponible.
seusercuerda La parte del usuario del contexto del archivo SELinux. system política, cuando corresponda. _default, usará el user parte de la póliza si está disponible.
estadocuerda
    Opciones:

  • ausente
  • regalo
Si la línea debería estar ahí o no.
unsafe_writesbooleano agregado en 2.2 de ansible.builtin
    Opciones:

  • no
Influir en el momento de utilizar la operación atómica para evitar la corrupción de datos o lecturas inconsistentes del archivo de destino. De forma predeterminada, este módulo utiliza operaciones atómicas para evitar la corrupción de datos o lecturas inconsistentes de los archivos de destino, pero a veces los sistemas están configurados o simplemente dañados de manera que evitan esto. . Un ejemplo son los archivos montados en la ventana acoplable, que no se pueden actualizar atómicamente desde el interior del contenedor y solo se pueden escribir de manera insegura. Esta opción permite que Ansible recurra a métodos inseguros para actualizar archivos cuando fallan las operaciones atómicas (sin embargo, no es así forzar a Ansible a realizar escrituras inseguras). Las escrituras no seguras están sujetas a condiciones de carrera y pueden provocar daños en los datos.
validarcuerda El comando de validación para ejecutar antes de copiar en su lugar. La ruta al archivo para validar se pasa a través de ‘% s’ que debe estar presente como en los ejemplos a continuación. El comando se pasa de forma segura para que las funciones de shell como la expansión y las tuberías no funcionen .

Notas

Nota

  • A partir de Ansible 2.3, el dest la opción ha sido cambiada a sendero por defecto, pero dest todavía funciona también.
  • Apoyos check_mode.

Ver también

Ver también

ansible.builtin.blockinfile

La documentación oficial sobre el ansible.builtin.blockinfile módulo.

ansible.builtin.copy

La documentación oficial sobre el ansible.builtin.copy módulo.

ansible.builtin.file

La documentación oficial sobre el ansible.builtin.file módulo.

ansible.builtin.replace

La documentación oficial sobre el ansible.builtin.replace módulo.

ansible.builtin.template

La documentación oficial sobre el ansible.builtin.template módulo.

community.windows.win_lineinfile

La documentación oficial sobre el community.windows.win_lineinfile módulo.

Ejemplos de

# NOTE: Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'-name: Ensure SELinux is set to enforcing mode
  ansible.builtin.lineinfile:path: /etc/selinux/config
    regexp:'^SELINUX='line: SELINUX=enforcing

-name: Make sure group wheel is not in the sudoers configuration
  ansible.builtin.lineinfile:path: /etc/sudoers
    state: absent
    regexp:'^%wheel'-name: Replace a localhost entry with our own
  ansible.builtin.lineinfile:path: /etc/hosts
    regexp:'^127.0.0.1'line: 127.0.0.1 localhost
    owner: root
    group: root
    mode:'0644'-name: Replace a localhost entry searching for a literal string to avoid escaping
  lineinfile:path: /etc/hosts
    search_string:'127.0.0.1'line: 127.0.0.1 localhost
    owner: root
    group: root
    mode:'0644'-name: Ensure the default Apache port is 8080
  ansible.builtin.lineinfile:path: /etc/httpd/conf/httpd.conf
    regexp:'^Listen 'insertafter:'^#Listen 'line: Listen 8080

-name: Ensure php extension matches new pattern
  lineinfile:path: /etc/httpd/conf/httpd.conf
    search_string:''insertafter:'^tn'line:'        '-name: Ensure we have our own comment added to /etc/services
  ansible.builtin.lineinfile:path: /etc/services
    regexp:'^# port for http'insertbefore:'^www.*80/tcp'line:'# port for http by default'-name: Add a line to a file if the file does not exist, without passing regexp
  ansible.builtin.lineinfile:path: /tmp/testfile
    line: 192.168.1.99 foo.lab.net foo
    create: yes

# NOTE: Yaml requires escaping backslashes in double quotes but not in single quotes-name: Ensure the JBoss memory settings are exactly as needed
  ansible.builtin.lineinfile:path: /opt/jboss-as/bin/standalone.conf
    regexp:'^(.*)Xms(d+)m(.*)$'line:'1Xms$xmsm3'backrefs: yes

# NOTE: Fully quoted because of the ': ' on the line. See the Gotchas in the YAML docs.-name: Validate the sudoers file before saving
  ansible.builtin.lineinfile:path: /etc/sudoers
    state: present
    regexp:'^%ADMIN ALL='line:'%ADMIN ALL=(ALL) NOPASSWD: ALL'validate: /usr/sbin/visudo -cf %s

# See https://docs.python.org/3/library/re.html for further details on syntax-name: Use backrefs with alternative group syntax to avoid conflicts with variable values
  ansible.builtin.lineinfile:path: /tmp/config
    regexp: ^(host=).*
    line: g<1> hostname backrefs: yes

Autores

  • Daniel Hokka Zakrissoni (@dhozac)
  • Ahti Kitsik (@ahtik)
  • Jose Angel Muñoz (@imjoseangel)