Comandos básicos ad-hoc

Los comandos ad-hoc se lanzan de golpe en la terminal y te permiten realizar tareas rápidas en un servidor. En este vídeo te cuento cómo puedes hacer algunos comandos ad-hoc elementales.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

En Ansible, la interacción básica con nuestros servidores se realiza a través de tareas, también conocidas como tasks. Estas tareas no se escriben como simples comandos que se ejecutan uno tras otro, sino que se definen de manera declarativa. Esto significa que en lugar de indicar paso a paso qué hacer, le decimos a Ansible cuál es el estado final deseado del sistema y él se encarga de ejecutar las operaciones necesarias para alcanzar ese estado.

Por ejemplo, si queremos que un servidor tenga instalado un paquete como Gintz, no le decimos que ejecute directamente un comando de instalación. En cambio, declaramos que el paquete debe estar presente. Si el paquete ya está instalado, Ansible no hará nada; si no lo está, procederá a instalarlo. Así, evitamos acciones innecesarias y aseguramos que el sistema quede exactamente como queremos.

Estas tareas declarativas suelen organizarse en archivos llamados playbooks, donde especificamos qué debe tener cada servidor: paquetes instalados, archivos copiados, configuraciones aplicadas, y más. Pero además de esta forma estructurada, Ansible ofrece una manera rápida y sencilla de ejecutar comandos puntuales sin necesidad de crear archivos: los comandos ad hoc.

Los comandos ad hoc nos permiten enviar órdenes inmediatas a uno o varios hosts definidos en nuestro inventario. Por ejemplo, si queremos comprobar si un servidor llamado makigas.es está accesible y listo para recibir instrucciones, podemos ejecutar:

ansible makigas.es -m ping

Aquí, -m ping indica que usamos el módulo ping, que es uno de los muchos módulos que Ansible tiene para realizar distintas tareas. Este comando no crea ningún archivo ni configuración permanente; simplemente envía un ping al host y espera una respuesta. Si todo va bien, recibiremos un mensaje de éxito que incluye un objeto JSON con detalles como si hubo cambios (en este caso, no) y la respuesta del ping.

Los módulos en Ansible son componentes que encapsulan funcionalidades específicas, como la gestión de paquetes, usuarios, bases de datos o servidores web. La comunidad ha desarrollado una gran cantidad de módulos, y además podemos instalar más desde repositorios como Galaxy para ampliar nuestras posibilidades y reutilizar tareas fácilmente.

Podemos usar el comando ad hoc con localhost para probar en nuestra propia máquina, siempre que tengamos un servidor SSH activo, ya que Ansible se conecta a los hosts mediante SSH. Por ejemplo:

ansible localhost -m ping

Si intentamos hacer un ping a un host que no está en nuestro inventario, como dannyrods.es, Ansible nos indicará que no reconoce ese host. Para solucionarlo, debemos agregarlo a nuestro inventario. Podemos hacerlo en el archivo global /etc/ansible/hosts si es un host que usaremos frecuentemente, o crear un archivo de inventario local para proyectos específicos.

Por ejemplo, podemos crear un archivo llamado hosts.txt con el siguiente contenido:

makigas.es
dannyrods.es
192.168.1.40

Luego, para usar este inventario personalizado, ejecutamos:

ansible dannyrods.es -m ping -i hosts.txt

Así, Ansible sabe dónde buscar la definición del host y puede ejecutar el comando correctamente.

Si intentamos ejecutar un comando ad hoc sobre un servidor que está apagado o inaccesible, el proceso tardará un tiempo hasta que se agote el timeout. Cuando finalmente falla, Ansible nos mostrará un mensaje en rojo indicando que no pudo alcanzar el host y nos dará detalles del error. Esto es útil para diagnosticar problemas de conexión antes de intentar tareas más complejas.

El comando ping es el más básico para verificar la disponibilidad de un host, y si falla, cualquier otra operación que queramos realizar sobre ese host también fallará. Por eso, es recomendable usarlo como primer paso para asegurarnos de que el servidor está listo para recibir instrucciones.

Además del módulo ping, existen muchos otros módulos que podemos usar con comandos ad hoc para realizar tareas rápidas y puntuales sin necesidad de escribir playbooks completos. Esto nos permite interactuar con nuestros servidores de forma ágil y eficiente, especialmente en situaciones donde necesitamos ejecutar acciones inmediatas o probar configuraciones.

En definitiva, Ansible combina la potencia de las tareas declarativas para mantener nuestros sistemas en el estado deseado con la flexibilidad de los comandos ad hoc para operaciones rápidas y directas, facilitando así la gestión y automatización de infraestructuras de manera sencilla y efectiva.

Lista de reproducción
  1. 1
    ¿Qué es Ansible?
    6 minutos
  2. 2
    Instalación de Ansible
    7 minutos
  3. 3
    Inventario
    7 minutos
  4. 4
    Comandos básicos ad-hoc
    7 minutos
  5. 5
    Comandos ad-hoc para controlar módulos
    9 minutos
  6. 6
    Redactando un playbook
    9 minutos
  7. 7
    Conectarse como otro usuario (inciso)
    8 minutos
  8. 8
    Handlers
    5 minutos