Fuera de la caja, Ansible tiene muchas herramientas y características. Uno de ellos es el módulo LineInfile. Este módulo le permite administrar una sola línea dentro de un archivo ubicado en un host remoto.
Admite funcionalidades como reemplazar contenido en un archivo, actualizar contenido dentro de una línea, agregar contenido en una línea y más.
Esta guía ilustrará cómo usar el módulo Ansible LineInFile para administrar archivos en hosts remotos.
Requisitos
Para seguir el concepto de este tutorial, asegúrese de tener los siguientes requisitos básicos:
Confirme si existe una entrada específica
Para garantizar que una entrada específica esté presente en un archivo, podemos usar el módulo LineInFile y establecer el escenario para presentar.
Considere el ejemplo de libro de jugadas que se muestra a continuación:
---
- Anfitriones: todos
gather_facts: si
convertirse en: si
tareas:
- Nombre: Compruebe si /etc /hosts contiene 127.0.0.1 "
LineInfile:
Ruta: "/etc/hosts"
Estado: presente
Línea: "127.0.0.1 "
check_mode: sí
Registrarse: fuera
El ejemplo anterior verificará si la entrada existe en el archivo especificado y lo agregará si no existe.
Crear un archivo y agregar una nueva línea
Podemos usar el módulo LineInFile para crear un archivo y agregar una nueva línea al archivo creado.
Considere el ejemplo de libro de jugadas que se muestra a continuación:
---
- Anfitriones: todos
gateo_facts: no
tareas:
- Nombre: Crear archivo y agregar línea
LineInfile:
Dest:/Home/Ubuntu/Ejemplo.confusión
Línea: esta es una nueva entrada en el archivo
Estado: presente
Crear: True
En el libro de jugadas de ejemplo anterior, usamos el parámetro Dest para especificar la ruta del archivo.
A continuación, usamos el parámetro de línea para establecer la línea para agregar al archivo. Usamos esto junto con el estado: el parámetro actual.
Finalmente, establecemos el parámetro Crear en True, que le dice a Ansible que cree el archivo si existe.
Si ejecuta el libro de jugadas dos veces, no realizará ninguna acción, ya que tanto el archivo como la línea especificada existen.
Agregue una línea antes/después de una entrada
Para agregar una línea antes o después de una entrada en particular, puede usar los parámetros InsertAfter o InsertBefore.
Eche un vistazo al ejemplo que se muestra a continuación:
---
- Anfitriones: todos
gateo_facts: no
tareas:
- Nombre: Agregar línea antes/después
LineInfile:
ruta:/etc/apache2/apache2.confusión
Regex: '^ServerRoot'
InsertAfter: '^#ServerRoot'
Línea: ServerRoot "/etc/apache2"
Después de la línea comentada, el módulo LineInFile agregará la entrada de servidor "/etc/apache2".
Eliminar una línea
Para eliminar una entrada de un archivo, configure el estado en ausente como se muestra en el libro de jugadas de ejemplo a continuación:
---
- Anfitriones: todos
gateo_facts: no
tareas:
- Nombre: Eliminar una línea
LineInfile:
ruta:/etc/apache2/apache2.confusión
Regex: '^#ServerRoot'
Estado: ausente
El ejemplo anterior usa una expresión regular simple para que coincida con la línea que comienza con #ServerRoot.
Comentando una línea
Para comentar una línea, use el parámetro Ansible LineInfile Backrefs. Eche un vistazo al libro de jugadas de ejemplo que se muestra a continuación:
---
- Anfitriones: todos
gateo_facts: no
tareas:
- Nombre: Eliminar una línea
LineInfile:
ruta:/etc/apache2/apache2.confusión
línea 1'
regex: '^#escuchar 8080'
Backrefs: Sí
En el ejemplo anterior, usamos una expresión regular para que coincida con la línea que deseamos comentar.
Luego usamos el contenido de la línea coincidente y agregamos un personaje de comentarios.
Archivo de copia de seguridad antes de cambiar
Es bueno asegurarse de hacer una copia de seguridad de una copia de sus archivos antes de editarlos para facilitar la restauración de archivos en caso de errores.
Para hacer una copia de seguridad de un archivo utilizando el módulo LineInFile, podemos establecer la opción de copia de seguridad en True.
Considere el libro de jugadas de ejemplo a continuación:
---
- Anfitriones: todos
gateo_facts: no
tareas:
- Nombre: Eliminar una línea
LineInfile:
ruta:/etc/apache2/apache2.confusión
Regex: '^#ServerRoot'
Estado: ausente
copia de seguridad: si
Conclusión
El módulo LineInFile Ansible es beneficioso al modificar archivos de configuración en hosts remotos que usan libros de jugadas Ansible.
Gracias por leer!