GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Ansible:comprobar si existe un archivo

Introducción

Ansible es una herramienta de infraestructura como código que permite que un solo nodo de control supervise y administre una gran cantidad de hosts remotos (servidores).

Ansible utiliza playbooks para definir una variedad de tareas que deben realizar los hosts remotos, incluida la verificación de si existen archivos y carpetas.

Este tutorial cubre cómo usar el stat módulo en Ansible para verificar si existen archivos y carpetas en hosts remotos.

Requisitos previos

  • Acceso a la línea de comandos/ventana de terminal
  • Ansible instalado y configurado (consulte nuestras guías sobre Instalación de Ansible en Windows e Instalación de Ansible en Ubuntu)

Comprobar si existe un archivo en Ansible

La forma más fácil de verificar si existe un archivo usando Ansible es con stat módulo.

El propósito de la stat El módulo es recuperar datos sobre archivos y carpetas y registrarlos en un registro. El módulo stat usa la siguiente sintaxis:

---
- name: Playbook name
  hosts: all

  tasks:
  - name: Task name
    stat:
      path: [path to the file or directory you want to check]
    register: register_name

...

donde:

  • stat: Declara que estamos usando el módulo de estadísticas.
  • path: Declara la ruta al archivo o carpeta que queremos verificar.
  • register: Proporciona el nombre del registro donde el módulo de estadísticas guarda los detalles del archivo y la carpeta.

Uno de los valores registrados en el registro es exists . Combinando este valor con debug El módulo le permite mostrar un mensaje que detalla si existe un archivo o una carpeta:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists

1. En el libro de jugadas de ejemplo, la primera tarea (Comprobar si existe un archivo ) usa el stat módulo para recuperar datos sobre el test.txt archivo ubicado en /home/example_folder en el host remoto. Registra estos hechos en un registro llamado file_data .

2. La segunda tarea (Informar si existe un archivo ) usa el debug módulo para mostrar un mensaje. Comprueba los file_data registrarse y utiliza el exists valor como condición para mostrar un mensaje. Si exists el valor es verdadero , el módulo muestra el mensaje ‘El archivo o directorio existe’ .

3. La tercera tarea (Informar de un archivo faltante ) hace lo mismo, excepto que muestra el mensaje ‘El archivo o directorio no existe’ si el exists el valor es falso .

Ejecutar el libro de jugadas proporciona el siguiente resultado:

La salida nos dice que el archivo, de hecho, no existe.

Si también desea verificar que el archivo en cuestión es un archivo normal y no una carpeta, agregue el isreg valor para el debug condición del módulo:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists and register_name.stat.isreg

Comprobar si existe un directorio en Ansible

Usar Ansible para verificar si existe un directorio es exactamente lo mismo que verificar si existe un archivo. La única diferencia es que usa el isdir valor para confirmar la ruta al directorio especificado:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists and register_name.stat.isdir

Ejecución de tareas de Ansible dependiendo de si existen archivos y carpetas

Hay momentos en los que desea ejecutar u omitir tareas en su libro de jugadas dependiendo de si existen ciertos archivos o carpetas.

Por ejemplo, si tiene un libro de jugadas diseñado para crear un archivo en cada host remoto, desea omitir aquellos hosts donde el archivo ya existe para evitar la creación de duplicados.

Para hacer esto, use los detalles del archivo recuperados por stat módulo con el when argumento para crear condiciones para ejecutar tareas:

---
- name: Playbook name
  hosts: all

  tasks:
  - name: Task name
    stat:
      path: [path to the file or directory you want to check]
    register: register_name

    - name: Task name 2
      file:
        path: [path to the file you want to create]
        state: touch
      when: not register_name.stat.exists

...

1. En el manual anterior, la primera tarea (Comprobar si existe un archivo ) usa el stat módulo para recuperar los detalles del test.txt archivo ubicado en example_folder en el host remoto.

2. La segunda tarea (Crear un archivo si aún no existe ) comienza comprobando que exists valor en el registro. Si el valor es verdadero , la tarea se omite y el cuaderno de estrategias finaliza. Si el valor es falso , la tarea se ejecuta y crea un nuevo archivo llamado test.txt .


Ubuntu
  1. Cómo verificar la sintaxis de sudoers

  2. ¿Cómo verificar el progreso de la ejecución de Cp?

  3. ¿Existe un delineador para verificar el archivo?

  4. ¿Comando para mostrar un mensaje arbitrario si existe un archivo en particular?

  5. compruebe si el archivo existe en el host remoto con ssh

Cómo verificar si existe un archivo o directorio en Bash

Cómo verificar si existe un archivo o directorio en Bash

Archivos de inventario y configuración de Ansible

Cómo crear y ejecutar un archivo de libro de jugadas de Ansible

Una breve introducción a Ansible Vault

Cómo verificar si existe un archivo o directorio en Bash Shell