Introducción
En este laboratorio, aprenderá sobre los comandos ad-hoc de Ansible. Los comandos ad-hoc son tareas rápidas y puntuales que puede ejecutar sin necesidad de un playbook completo. Son perfectos para operaciones simples como verificar el estado del sistema, administrar archivos o ejecutar comandos rápidos en múltiples servidores. Al final de este laboratorio, entenderá cómo usar los comandos ad-hoc de manera efectiva, lo cual es crucial para realizar tareas rápidas y solucionar problemas en su entorno administrado por Ansible.
Comprender la estructura de los comandos ad-hoc de Ansible
Comencemos por entender la estructura básica de un comando ad-hoc de Ansible. La sintaxis general es:
ansible [pattern] -m [module] -a "[module options]"
Donde:
[pattern]es el host o grupo de hosts de su inventario que desea seleccionar.-m [module]especifica qué módulo de Ansible se debe utilizar.-a "[module options]"proporciona argumentos al módulo.
Antes de comenzar a ejecutar comandos, aseguremos que tenemos un archivo de inventario adecuado. Cree o edite el archivo de inventario:
nano /home/labex/project/inventory
Agregue el siguiente contenido:
localhost ansible_connection=local
[webservers]
localhost
[dbservers]
localhost
Guarde y salga del editor.
Ahora, intentemos un comando ad-hoc simple para hacer ping a todos los hosts de nuestro inventario:
ansible all -i /home/labex/project/inventory -m ping
Debería ver una salida similar a esta:
localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}
Este comando utiliza el módulo ping para verificar la conectividad con todos los hosts del inventario. La palabra clave all selecciona todos los hosts.
Desglosemos este comando:
alles el patrón, que selecciona todos los hosts del inventario.-i /home/labex/project/inventoryespecifica el archivo de inventario a utilizar.-m pingle dice a Ansible que utilice el móduloping.
Ejecutar comandos con el módulo Command
Uno de los módulos más utilizados en los comandos ad-hoc es el módulo command. Permite ejecutar comandos arbitrarios en los hosts de destino.
Usemos el módulo command para verificar el espacio en disco de todos los hosts:
ansible all -i /home/labex/project/inventory -m command -a "df -h"
Debería ver una salida que muestra el uso del disco en su máquina local.
Ahora, intentemos ejecutar un comando solo en el grupo webservers:
ansible webservers -i /home/labex/project/inventory -m command -a "uptime"
Este comando mostrará el tiempo de actividad de todos los hosts en el grupo webservers.
El módulo command es el módulo predeterminado, por lo que puede omitir -m command si está utilizando este módulo. Por ejemplo:
ansible dbservers -i /home/labex/project/inventory -a "free -m"
Este comando mostrará el uso de memoria en todos los hosts del grupo dbservers.
Recuerde, el módulo command no admite variables de shell u operaciones como |, >, <, &. Para esas, necesitaría usar el módulo shell.
Usar otros módulos útiles en comandos ad-hoc
Si bien el módulo command es versátil, Ansible proporciona muchos otros módulos que pueden ser muy útiles en comandos ad-hoc. Exploremos algunos de ellos.
El módulo
copy: Este módulo se utiliza para copiar archivos desde la máquina local a los hosts remotos. Creemos un archivo simple y cópielo a todos los hosts:echo "Hello from Ansible" > /home/labex/project/hello.txt ansible all -i /home/labex/project/inventory -m copy -a "src=/home/labex/project/hello.txt dest=/tmp/hello.txt"Este comando copia el archivo
hello.txtdesde la máquina local al directorio/tmpen todos los hosts remotos.El módulo
file: Este módulo se utiliza para administrar archivos y directorios. Creemos un directorio en todos los servidores web:ansible webservers -i /home/labex/project/inventory -m file -a "path=/tmp/test_dir state=directory mode=0755"Este comando crea un directorio llamado
test_diren el directorio/tmpen todos los servidores web, con permisos establecidos en 0755.El módulo
setup: Este módulo se utiliza para recopilar información (facts) sobre los hosts remotos. Se ejecuta automáticamente al comienzo de los playbooks, pero también se puede usar en comandos ad-hoc:ansible dbservers -i /home/labex/project/inventory -m setupEste comando mostrará una gran cantidad de información sobre los hosts en el grupo dbservers. Para limitar la salida, puede usar filtros:
ansible dbservers -i /home/labex/project/inventory -m setup -a "filter=ansible_distribution*"Esto solo mostrará información relacionada con la distribución del sistema operativo.
Estos ejemplos demuestran cómo se pueden usar diferentes módulos para realizar diversas tareas rápidamente utilizando comandos ad-hoc.
Resumen
En este laboratorio, has aprendido sobre los comandos ad-hoc de Ansible y cómo usarlos de manera efectiva. Estos son los puntos clave:
Los comandos ad-hoc son tareas rápidas y puntuales que se pueden ejecutar sin crear un playbook completo.
La estructura básica de un comando ad-hoc es:
ansible [pattern] -m [module] -a "[module options]"El módulo
pinges útil para verificar la conectividad con los hosts.El módulo
commandte permite ejecutar comandos arbitrarios en los hosts de destino. Es el módulo predeterminado, por lo que se puede omitir-m command.Otros módulos útiles para comandos ad-hoc incluyen:
copy: para copiar archivos a hosts remotosfile: para administrar archivos y directoriossetup: para recopilar información (facts) sobre hosts remotos
Puedes seleccionar grupos específicos de hosts utilizando los nombres de grupo definidos en tu archivo de inventario.
Los comandos ad-hoc son excelentes para tareas rápidas, pero para operaciones más complejas o repetibles, los playbooks son más adecuados.
Los comandos ad-hoc son una característica poderosa de Ansible que te permite realizar tareas rápidas en toda tu infraestructura. Son especialmente útiles para solucionar problemas, recopilar información o realizar cambios rápidos. Sin embargo, para tareas más complejas o repetibles, es mejor utilizar playbooks.
A medida que continúes trabajando con Ansible, practica el uso de diferentes módulos en comandos ad-hoc. Explora la documentación de Ansible para aprender sobre más módulos y sus usos. Recuerda, aunque los comandos ad-hoc son poderosos, no proporcionan la idempotencia y reproducibilidad de los playbooks, así que utilízalos con prudencia en entornos de producción.


