Ya no necesitas indagar más por otras webs porque llegaste al sitio perfecto, contamos con la solución que quieres pero sin complicarte.
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Si la línea debería estar ahí o no. |
unsafe_writesbooleano agregado en 2.2 de ansible.builtin |
|
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)
Comentarios y valoraciones del post
Si para ti ha resultado provechoso nuestro artículo, sería de mucha ayuda si lo compartes con otros juniors y nos ayudes a difundir esta información.