Cómo usar Ansible LineInfile

Cómo usar Ansible LineInfile
Ansible es una herramienta de automatización de código abierto gratuita capaz de administrar uno o cientos de hosts remotos. Su uso principal es administrar configuraciones, implementar servidores remotos, administrar aplicaciones y servicios, y muchos más. También funciona en sistemas de unix y de unix, así como en Windows.

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:

  1. Un nodo de control ansible
  2. Un host remoto para administrar
  3. Acceso ssh al host remoto

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!