Instalación e inventario

AnsibleBeginner
Practicar Ahora

Introducción

En este laboratorio dará sus primeros pasos en el mundo de Ansible, una potente herramienta de automatización de código abierto.

Imagine que debe administrar 100 servidores. Iniciar sesión en cada uno para instalar software o cambiar configuraciones sería tedioso y propenso a errores. Ansible le permite administrar esos servidores, llamados nodos administrados, desde un único nodo de control, sin instalar agentes en los destinos.

Este diseño sin agentes es una de las principales razones por las que Ansible se hizo popular en los equipos de operaciones. Reduce la cantidad de software adicional que debe mantener en cada host y se basa en herramientas en las que los administradores ya confían, especialmente SSH.

Ansible funciona de la siguiente manera:

  1. Se conecta a los servidores mediante SSH, la misma herramienta que utiliza para iniciar sesión de forma remota.
  2. Lee instrucciones de archivos de texto sencillos, escritos en YAML.
  3. Envía pequeños programas, llamados módulos, a los servidores para realizar el trabajo.

Este modelo sin agentes es una de las razones por las que Ansible se hizo popular. Se basa en herramientas que los administradores de Linux ya conocen, especialmente SSH y la configuración basada en texto.

En este laboratorio actuará como administrador y como equipo administrado. Instalará Ansible en su entorno y lo configurará para administrarse a sí mismo (localhost). Es una excelente forma de aprender los conceptos básicos de manera segura.

Aprenderá a:

  • Instalar Ansible mediante el gestor de paquetes.
  • Configurar claves SSH para que Ansible pueda iniciar sesión sin contraseña.
  • Crear un archivo de inventario que enumere los equipos que desea administrar.
  • Probar la conexión mediante el módulo ping.

Instalar Ansible

El primer paso consiste en instalar el software de Ansible en su equipo. Como utilizamos Ubuntu, podemos usar el gestor de paquetes apt, que funciona como una «tienda de aplicaciones» para herramientas de línea de comandos de Linux.

Aunque el script de configuración ya ejecutó una actualización, es recomendable asegurarse de que la lista de paquetes esté actualizada:

sudo apt update

Ahora instale Ansible ejecutando:

sudo apt install ansible -y

Cómo funciona el comando:

  • sudo: Ejecuta el comando con privilegios de administrador (root).
  • apt install: Indica al gestor de paquetes que instale un programa.
  • ansible: Es el nombre del paquete que queremos instalar.
  • -y: Responde automáticamente «sí» a las solicitudes de confirmación, como «¿Desea continuar?».

Cuando finalice la instalación, verifique la versión:

ansible --version

Debería ver una salida que comienza por ansible [core 2.x.x]. Esto confirma que Ansible está instalado y listo para usarse.

Generar claves SSH

Ansible utiliza SSH (Secure Shell) para comunicarse con los servidores. Es la forma estándar de acceder de manera remota a servidores Linux.

Por eso el inventario es tan importante. Ansible necesita una lista clara de las máquinas existentes, la forma en que están agrupadas y cómo acceder a ellas. En la práctica, el inventario funciona como la libreta de direcciones de su sistema de automatización.

De forma predeterminada, SSH requiere una contraseña. Sin embargo, en herramientas de automatización como Ansible no es posible escribir una contraseña cada vez que se conecta a un servidor. En su lugar, utilizamos claves SSH.

Piense en las claves SSH como una cerradura y una llave:

  • Clave pública (la cerradura): la coloca en cada servidor al que desea acceder.
  • Clave privada (la llave): la conserva de forma segura en su equipo de control.

Cuando Ansible se conecta, el servidor comprueba si su «llave» coincide con la «cerradura». Si coincide, puede acceder sin contraseña.

Genere un par de claves ejecutando:

ssh-keygen -t rsa -b 2048 -N "" -f ~/.ssh/id_rsa

Cómo funciona el comando:

  • ssh-keygen: Es la herramienta para generar claves.
  • -t rsa: Crea una clave de tipo RSA, un estándar.
  • -b 2048: Crea una clave de 2048 bits, suficientemente segura.
  • -N "": Establece una frase de contraseña vacía. Esto es fundamental: significa «no me pida una contraseña para usar esta clave», lo que permite que Ansible se ejecute de forma totalmente automática.
  • -f ~/.ssh/id_rsa: Guarda la clave en la ubicación estándar.

Compruebe que se hayan creado los archivos:

ls -l ~/.ssh/

Debería ver id_rsa, que es su clave privada secreta, y id_rsa.pub, que es su clave pública.

Autorizar la clave

Ahora que tiene una clave, debe colocar la clave pública en el servidor que desea administrar. En este laboratorio administraremos localhost, es decir, el mismo equipo que está utilizando.

Este paso muestra la separación entre la autenticación y la lógica de automatización. Antes de que Ansible pueda automatizar cualquier tarea, necesita una forma fiable y no interactiva de autenticarse en el destino.

Debe añadir el contenido de id_rsa.pub a un archivo llamado authorized_keys, ubicado en la carpeta .ssh.

Normalmente utilizaría un comando como ssh-copy-id. Sin embargo, ese comando suele solicitar primero una contraseña para comprobar su identidad. Como este laboratorio no utiliza contraseñas, copiaremos la clave manualmente.

Ejecute este comando para añadir su clave pública al final de la lista de claves autorizadas:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Cómo funciona el comando:

  • cat ...: Lee su clave pública.
  • >>: Añade la salida al final del archivo de destino, en lugar de sobrescribirlo.
  • .../authorized_keys: Es el archivo que SSH consulta para comprobar quién tiene permiso para iniciar sesión.

Ahora establezca los permisos correctos para que SSH confíe en el archivo:

chmod 600 ~/.ssh/authorized_keys

¡Pongámoslo a prueba! Intente conectarse por SSH a su propio equipo:

ssh localhost "echo Hello from SSH"

Si aparece la pregunta «Are you sure you want to continue connecting?», escriba yes y pulse Enter.

Debería ver inmediatamente Hello from SSH, sin que se le solicite una contraseña. Esto significa que Ansible también podrá conectarse sin contraseña.

Crear un archivo de inventario

Ansible necesita una lista de los servidores que debe administrar. Esta lista se denomina inventario.

El inventario puede ser un archivo de texto sencillo. Crearemos un directorio de proyecto y un archivo de inventario llamado hosts.ini.

Cree un archivo vacío llamado hosts.ini:

touch hosts.ini

En este momento, Ansible todavía no conoce ningún servidor. Los añadiremos en el siguiente paso.

Añadir un host al inventario

Ahora editará el archivo hosts.ini para añadir nuestro servidor. Los inventarios de Ansible suelen utilizar el formato INI, que tiene este aspecto:

[group_name]
server_address

Agrupar los servidores, por ejemplo en [webservers] o [databases], permite ejecutar comandos a la vez en todos los servidores de un mismo tipo.

Añadiremos localhost a un grupo llamado [webservers]. Ejecute este comando para escribir en el archivo:

echo -e "[webservers]\nlocalhost" > hosts.ini

Cómo funciona el comando:

  • echo -e: Imprime texto y permite utilizar caracteres especiales como \n (salto de línea).
  • "[webservers]\nlocalhost": Es el texto que queremos escribir. Coloca [webservers] en la primera línea y localhost en la segunda.
  • > hosts.ini: Sobrescribe el archivo con este contenido.

Puede verificar el contenido del archivo:

cat hosts.ini

Debería verse exactamente así:

[webservers]
localhost

Probar la conectividad

¡Ha llegado el momento de comprobar el resultado! Pediremos a Ansible que se conecte a todos los servidores del inventario y compruebe si están disponibles.

Utilizaremos el comando ansible, que sirve para ejecutar tareas puntuales, junto con el módulo ping.

Ejecute este comando:

ansible all -m ping -i hosts.ini

Cómo funciona el comando:

  • all: Coincide con todos los hosts del inventario.
  • -m ping: Indica a Ansible que utilice el módulo llamado ping.
    • Nota: Es diferente del comando de red ping. El módulo ping de Ansible inicia sesión en el servidor, comprueba si Python está disponible y devuelve "pong". Esto demuestra que la configuración funciona.
  • -i hosts.ini: Indica a Ansible que utilice el archivo de inventario que acabamos de crear, en lugar del inventario predeterminado del sistema.

Debería ver un mensaje verde de «SUCCESS»:

localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Si ve "ping": "pong", ¡enhorabuena! Ha configurado correctamente Ansible para administrar su servidor.

Resumen

En este laboratorio ha creado los fundamentos de la automatización con Ansible. Ha aprendido lo siguiente:

  1. Instalación: Preparar Ansible en su sistema.
  2. Configuración de claves SSH: Crear «claves» para que Ansible pueda iniciar sesión de forma segura sin contraseñas.
  3. Inventario: Crear una lista (hosts.ini) de los servidores que desea administrar.
  4. Comprobación de conectividad: Utilizar el módulo ping para verificar que todo funciona.

Estos pasos —instalar, configurar el acceso, crear el inventario y probar— son los primeros que realizará en cualquier proyecto de Ansible, tanto si administra un servidor como si administra mil.