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.
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í,touchindica 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 estadoabsent(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 variablefile_infoutilizando 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ódulodebugpara imprimir un mensaje con información sobre la existencia de un archivo, que se obtiene a través defile_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!


