Módulo Stat de Ansible

AnsibleBeginner
Practicar Ahora

Introducción

En este laboratorio, explorarás el módulo Stat de Ansible, que te permite recopilar información sobre archivos y directorios en hosts remotos. El módulo Stat proporciona varios atributos e información, como el tamaño del archivo, la propiedad, los permisos y las marcas de tiempo de modificación.

Obtener Información de Archivos

En este paso, utilizarás el módulo Stat de Ansible para recopilar información sobre un archivo en un host remoto.

Primero, crea un nuevo archivo de playbook de Ansible llamado /home/labex/project/stat-module-playbook.yaml y dile a un editor de texto que lo abra.
Agrega el siguiente contenido al archivo de playbook:

- hosts: localhost
  tasks:
    - name: Obtener información sobre el archivo
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Imprimir información sobre el archivo
      debug:
        msg: |
          Tamaño del archivo: {{ file_info.stat.size }}
          Propietario: {{ file_info.stat.uid }}:{{ file_info.stat.gid }}
          Permisos: {{ file_info.stat.mode }}
  • hosts: Esto especifica el host destino en el que se ejecutará el playbook. En este caso, el playbook se ejecutará en el host local porque el host destino es localhost.
  • tasks: Esta es una lista de tareas que se ejecutarán.
  • name: Este es el nombre descriptivo de la tarea que identifica el propósito de la tarea.
  • stat: Este módulo de Ansible recopila información sobre un archivo en el host remoto especificado por el parámetro path.
  • register: Guarda la salida del módulo stat en una variable llamada file_info para su uso posterior.
  • debug: Imprime información de depuración durante la ejecución del playbook.
  • msg: Muestra un mensaje con la información del archivo recuperada utilizando el módulo stat, incluyendo el tamaño del archivo, la propiedad (UID y GID) y los permisos.

En resumen, este playbook está diseñado para recuperar información sobre un archivo específico ubicado en /home/labex/project/file.txt en el host local y mostrar varios detalles como el tamaño, la propiedad y los permisos.

Luego, crea un archivo llamado file.txt en el directorio /home/labex/project.

echo "This is the content of the file." > /home/labex/project/file.txt

Finalmente, ejecuta el playbook con el siguiente comando:

ansible-playbook stat-module-playbook.yaml

Observa la salida para ver el tamaño del archivo, la propiedad y los permisos del archivo especificado.
Salida de ejemplo:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Get file information] ****************************************************
ok: [localhost]

TASK [Print file information] **************************************************
ok: [localhost] => {
    "msg": "File size: 33\nOwnership: 5000:5000\nPermissions: 0664\n"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Verificar la Existencia de un Archivo

En este paso, utilizarás el módulo Stat de Ansible para verificar la existencia de un archivo en un host remoto.

Primero, modifica el archivo de playbook existente eliminando todo el contenido y agregando el siguiente contenido al archivo de playbook:

- hosts: localhost
  tasks:
    - name: Verificar la existencia del archivo en el host remoto
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Imprimir la existencia del archivo
      debug:
        msg: "El archivo existe: {{ file_info.stat.exists }}"
  • hosts: Esto especifica el host destino en el que se ejecutará el playbook. En este caso, el playbook se ejecutará en el host local porque el host destino es localhost.
  • tasks: Esta es una lista de tareas que se ejecutarán.
  • name: Este es el nombre descriptivo de la tarea que identifica el propósito de la tarea.
  • stat: Este módulo de Ansible recopila información sobre un archivo en el host remoto especificado por el parámetro path.
  • register: Guarda la salida del módulo stat en una variable llamada file_info para su uso posterior.
  • debug: Imprime información de depuración durante la ejecución del playbook.
  • msg: Muestra un mensaje que indica si el archivo existe o no basado en la información recuperada utilizando el módulo stat.

En resumen, este playbook está diseñado para verificar la existencia de un archivo específico ubicado en /path/on/remote/host/file.txt en el host local y mostrar un mensaje que indique si el archivo existe o no.

Luego, ejecuta el playbook con el siguiente comando:

ansible-playbook stat-module-playbook.yaml

Observa la salida para ver si el archivo file.txt existe en el host remoto.
Salida de ejemplo:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Check file existence on remote host] *************************************
ok: [localhost]

TASK [Print file existence] ****************************************************
ok: [localhost] => {
    "msg": "El archivo existe: True"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Recuperar la Marca de Tiempo de Modificación del Archivo

En este paso, utilizarás el módulo Stat de Ansible para obtener la marca de tiempo de modificación de un archivo en un host remoto.

Primero, modifica el archivo de playbook existente eliminando todo el contenido y agregando el siguiente contenido al archivo de playbook:

- hosts: localhost
  tasks:
    - name: Obtener la marca de tiempo de modificación del archivo
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Imprimir la marca de tiempo de modificación del archivo
      debug:
        msg: "Marca de tiempo de modificación del archivo: {{ file_info.stat.mtime }}"
  • hosts: Esto especifica el host destino en el que se ejecutará el playbook. En este caso, el playbook se ejecutará en el host local porque el host destino es localhost.
  • tasks: Esta es una lista de tareas que se ejecutarán.
  • name: Este es el nombre descriptivo de la tarea que identifica el propósito de la tarea.
  • stat: Este módulo de Ansible recopila información sobre un archivo en el host remoto especificado por el parámetro path.
  • register: Guarda la salida del módulo stat en una variable llamada file_info para su uso posterior.
  • debug: Imprime información de depuración durante la ejecución del playbook.
  • msg: Muestra un mensaje que contiene la marca de tiempo de modificación del archivo recuperada utilizando el módulo stat.

En resumen, este playbook está diseñado para obtener la marca de tiempo de modificación de un archivo específico ubicado en /home/labex/project/file.txt en el host local y mostrar la marca de tiempo.

Luego, ejecuta el playbook con el siguiente comando:

ansible-playbook stat-module-playbook.yaml

Observa la salida para ver la marca de tiempo de modificación del archivo file.txt en un formato legible para humanos.
Salida de ejemplo:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Get file modification timestamp] *****************************************
ok: [localhost]

TASK [Print file modification timestamp] ***************************************
ok: [localhost] => {
    "msg": "Marca de tiempo de modificación del archivo: 1710555624.2304714"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Resumen

¡Felicitaciones! Has completado con éxito el laboratorio del módulo Stat de Ansible. Has aprendido cómo recopilar información sobre archivos, verificar la existencia de archivos y recuperar la marca de tiempo de modificación utilizando el módulo Stat en Ansible.

El módulo Stat es una herramienta poderosa que te permite recopilar varios atributos e información sobre archivos y directorios en hosts remotos. Ahora puedes aprovechar este módulo en tus playbooks de Ansible para realizar operaciones avanzadas relacionadas con archivos y tomar decisiones informadas basadas en la información recopilada.

Sigue explorando la documentación de Ansible y experimentando con diferentes módulos para mejorar tus habilidades de automatización. ¡Que disfrutes de Ansible!