Módulo File de Ansible

AnsibleBeginner
Practicar Ahora

Introducción

En este laboratorio, explorarás el módulo File de Ansible, que te permite administrar archivos y directorios en hosts remotos. El módulo File ofrece una amplia gama de funcionalidades, como crear, eliminar, modificar permisos y comprobar la existencia de archivos y directorios.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Crear un archivo en un host remoto

En este paso, crearás un archivo en un host remoto utilizando el módulo File de Ansible.

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

- hosts: localhost
  tasks:
    - name: Crear un archivo en un host remoto
      file:
        path: /home/labex/file.txt
        state: touch
  • file: Módulo de Ansible para manipular el sistema de archivos.
  • path: Especifica la ruta al archivo, en este caso /home/labex/file.txt.
  • state: Especifica el estado del archivo. Aquí, touch indica que el archivo se creará si no existe, o se actualizará con los timestamps de acceso y modificación si ya existe.

El propósito de este playbook es crear un archivo llamado file.txt en el host remoto.

Luego, ejecuta el playbook utilizando el siguiente comando:

ansible-playbook file-module-playbook.yaml

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 [Create a file on remote host] ********************************************
changed: [localhost]

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

Finalmente, verifica que el archivo file.txt se haya creado en la ruta especificada en el host remoto.

ll /home/labex/file.txt

Salida de ejemplo:

-rw-rw-r-- 1 labex labex 0 Mar 10 03:12 file.txt

Verás el mensaje que indica que /home/labex/file.txt se creó con éxito.

Administrar permisos de archivo

En este paso, aprenderás a administrar los permisos de archivos en un host remoto utilizando el módulo File de Ansible.

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

- hosts: localhost
  tasks:
    - name: Establecer permisos de archivo
      file:
        path: /home/labex/file.txt
        mode: "0644"
  • file: Módulo de Ansible para manipular el sistema de archivos.
  • path: Especifica la ruta al archivo, en este caso /home/labex/file.txt.
  • mode: Este parámetro se utiliza para establecer el modo de permisos del archivo. Reemplaza "0644" con el modo de permisos deseado para el archivo. Consulta la documentación de chmod para obtener más información sobre los modos de permisos.

El propósito de este playbook es establecer los permisos del archivo /home/labex/file.txt en 0644.

Luego, ejecuta el playbook utilizando el siguiente comando:

ansible-playbook file-module-playbook.yaml

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 [Establecer permisos de archivo] ******************************************
changed: [localhost]

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

Finalmente, verifica que los permisos del archivo estén establecidos como se especificó en el host remoto.

ll /home/labex/file.txt

Salida de ejemplo:

-rw-r--r-- 1 labex labex 0 Mar 10 03:12 /home/labex/file.txt

El -rw-r--r-- aquí indica que el modo de /home/labex/file.txt se ha establecido correctamente en 0644.

Eliminar un archivo en un host remoto

En este paso, aprenderás a eliminar un archivo en un host remoto utilizando el módulo File de Ansible.

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

- hosts: localhost
  tasks:
    - name: Eliminar un archivo en un host remoto
      file:
        path: /home/labex/file.txt
        state: absent
  • file: Módulo de Ansible para manipular el sistema de archivos.
  • path: Especifica la ruta al archivo que se va a eliminar, es decir, /home/labex/file.txt.
  • state: Este parámetro indica que el archivo debe estar en el estado absent (ausente). Por lo tanto, el objetivo de la tarea es eliminar el archivo en la ruta especificada.

El propósito de este playbook es eliminar el archivo /home/labex/file.txt en el host remoto.

Luego, ejecuta el playbook utilizando el siguiente comando:

ansible-playbook file-module-playbook.yaml

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 [Eliminar un archivo en un host remoto] **********************************
changed: [localhost]

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

Finalmente, verifica que el archivo file.txt se haya eliminado y ya no exista en el host remoto.

ll /home/labex/file.txt

Salida de ejemplo:

ls: cannot access '/home/labex/file.txt': No such file or directory

Este mensaje indica que el archivo /home/labex/file.txt se eliminó correctamente.

Verificar la existencia de un archivo

En este paso, aprenderás a comprobar la existencia de un archivo en un host remoto utilizando el módulo File de Ansible.

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

- hosts: localhost
  tasks:
    - name: Comprobar la existencia de un archivo en un host remoto
      stat:
        path: /home/labex/file.txt
      register: file_info

    - name: Imprimir la existencia del archivo
      debug:
        msg: "El archivo existe: {{ file_info.stat.exists }}"
  • stat: Este es uno de los módulos de Ansible para obtener información de estado sobre un archivo o directorio.
  • path: Especifica la ruta al archivo que se va a comprobar, es decir, /home/labex/file.txt.
  • register: Guarda el resultado de la ejecución del módulo en la variable file_info utilizando la palabra clave register.
  • debug: Este es uno de los módulos de Ansible que imprime información de depuración.
  • msg: Utiliza el módulo debug para imprimir un mensaje con información sobre la existencia de un archivo, que se obtiene a través de file_info.stat.exists.

El propósito de este playbook es comprobar la existencia del archivo /home/labex/file.txt en el host remoto e imprimir la información en la salida estándar.

Luego, ejecuta el playbook utilizando el siguiente comando:

ansible-playbook file-module-playbook.yaml

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 [Comprobar la existencia de un archivo en un host remoto] ****************
ok: [localhost]

TASK [Imprimir la existencia del archivo] ************************************
ok: [localhost] => {
    "msg": "El archivo existe: False"
}

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

Finalmente, observa la salida para ver si el archivo file.txt existe en el host remoto.
"msg": "El archivo existe: False" indica que el archivo /home/labex/file.txt no existe.

Resumen

¡Felicidades! Has completado con éxito el laboratorio del Módulo File de Ansible. Has aprendido a crear archivos y directorios, administrar permisos de archivos, eliminar archivos y comprobar la existencia de archivos en hosts remotos utilizando el Módulo File.

El Módulo File es una herramienta poderosa en Ansible que te permite realizar diversas operaciones relacionadas con archivos durante las tareas de automatización. Ahora puedes utilizar con confianza el Módulo File en tus playbooks de Ansible para administrar archivos y directorios de manera eficiente.

Sigue explorando la documentación de Ansible y otros módulos para ampliar tus conocimientos y mejorar tus habilidades de automatización. ¡Que disfrutes de Ansible!