En este laboratorio, aprenderás cómo instalar y configurar Ansible en un sistema Ubuntu. Ansible es una potente herramienta de automatización de código abierto que simplifica la gestión de configuraciones, la implementación de aplicaciones y la automatización de tareas. Al final de este laboratorio, tendrás Ansible instalado y configurado, listo para gestionar sistemas remotos de manera eficiente.
Actualizar paquetes del sistema
Antes de instalar cualquier software nuevo, es crucial asegurarse de que tu sistema tenga las últimas actualizaciones. Esto ayuda a prevenir posibles conflictos y asegura que tengas las últimas parches de seguridad.
Primero, actualiza las listas de paquetes:
sudo apt update
Este comando se conecta a los repositorios de software de Ubuntu y descarga información sobre los últimos paquetes disponibles. Puedes ver una salida como esta:
Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease
Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
No te preocupes si ves algunas líneas "Hit" o "Get" - esto es normal y muestra qué información del repositorio se está actualizando.
Instalar Ansible
Ahora que tu sistema está actualizado, puedes proceder a instalar Ansible. Los repositorios predeterminados de Ubuntu incluyen Ansible, lo que hace que el proceso de instalación sea sencillo.
Instala Ansible utilizando el siguiente comando:
sudo apt install ansible -y
Desglosemos este comando:
sudo: Esto ejecuta el comando con privilegios administrativos, lo cual es necesario para instalar software.
apt install: Esto le dice al gestor de paquetes que instale un nuevo paquete.
ansible: Este es el nombre del paquete que queremos instalar.
-y: Esta bandera responde automáticamente "sí" a cualquier solicitud durante la instalación.
Verás una salida que muestra el progreso de la instalación:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Processing triggers for man-db (2.10.2-1)...
No te alarmes por la cantidad de texto; esto solo te muestra todas las dependencias que se están instalando junto con Ansible.
Después de que se complete la instalación, es una buena práctica verificar que Ansible se haya instalado correctamente. Puedes hacer esto comprobando su versión:
ansible --version
Este comando debe mostrar información sobre la versión de Ansible instalada:
Si ves una salida similar a esta, ¡felicidades! Ansible ahora está instalado en tu sistema.
Configurar SSH para Ansible
Ansible utiliza SSH para comunicarse con los nodos gestionados. Para simplificar este proceso y mejorar la seguridad, configuraremos la autenticación basada en claves SSH. Esto permite que Ansible se conecte a otras máquinas sin necesidad de ingresar una contraseña cada vez.
Primero, genera un par de claves SSH:
ssh-keygen -t rsa -b 4096 -C "labex@example.com"
Desglosemos este comando:
ssh-keygen: Este es el programa que genera el par de claves.
-t rsa: Esto especifica que queremos una clave de tipo RSA.
-b 4096: Esto establece el tamaño de la clave en 4096 bits, lo cual es muy seguro.
-C "labex@example.com": Esto agrega un comentario a la clave, generalmente una dirección de correo electrónico.
Cuando ejecutes este comando, verás solicitudes:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Presiona Enter para aceptar la ubicación predeterminada.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Para este laboratorio, puedes dejar la frase de contraseña en blanco presionando Enter dos veces. En un entorno de producción, querrías usar una frase de contraseña segura.
Verás una salida que confirma la creación de la clave:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCDEFG labex@example.com
The key's randomart image is:
+---[RSA 4096]----+
| . |
| .. |
| o |
| . o |
| + = S |
| + * + |
| . = o. |
|. + = |
| +.+. |
+----[SHA256]-----+
A continuación, necesitamos copiar esta clave a la máquina local. En un escenario del mundo real, la copiarías a los hosts remotos, pero para este laboratorio, usaremos la máquina local:
ssh-copy-id labex@localhost
Se te solicitará la contraseña del usuario labex. Para este entorno de laboratorio, puedes encontrar la contraseña abriendo la terminal VNC y ejecutando:
echo $PASSWORD
Nota: Debes ejecutar este comando en la terminal VNC. La contraseña solo está disponible en la terminal VNC y no es accesible a través de SSH o la terminal web.
Ingresa la contraseña cuando ssh-copy-id te la solicite. Deberías ver una salida como esta:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
labex@localhost's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'labex@localhost'"
and check to make sure that only the key(s) you wanted were added.
Para verificar que la configuración de la clave SSH fue exitosa, intenta conectarte por SSH a la máquina local:
ssh labex@localhost
Si la clave se configuró correctamente, deberías poder iniciar sesión sin que se te solicite una contraseña. Verás un nuevo indicador de comando. Escribe exit para volver a tu sesión original.
Crear y configurar el inventario de Ansible
El inventario de Ansible es un archivo que define los hosts y grupos de hosts en los que se ejecutan comandos, módulos y tareas en un playbook. Es como una libreta de direcciones para Ansible, que le dice a qué máquinas puede conectarse.
Primero, crea el directorio de configuración de Ansible:
sudo mkdir -p /etc/ansible
Este comando crea el directorio /etc/ansible si no existe. La bandera -p asegura que no arroje un error si el directorio ya está creado.
Ahora, crea y edita el archivo de inventario:
sudo nano /etc/ansible/hosts
Esto abre el editor de texto nano. Si eres nuevo en nano, no te preocupes; es un editor simple y fácil de usar.
[local] y [webservers] son nombres de grupos. Puedes usarlos para organizar tus hosts.
localhost ansible_connection=local le dice a Ansible que se conecte directamente a la máquina local, sin usar SSH.
web1 ansible_host=localhost ansible_connection=ssh ansible_user=labex configura un host llamado web1. Para este laboratorio, también se está conectando a localhost, pero usando SSH y accediendo como el usuario labex.
Para guardar el archivo en nano, presiona Ctrl+X, luego Y y, finalmente, Enter.
Para verificar el contenido del archivo de inventario, usa el comando cat:
cat /etc/ansible/hosts
Deberías ver el contenido que acabas de agregar al archivo.
Probar la conectividad de Ansible
Ahora que tenemos Ansible instalado y configurado, probemos la conectividad para asegurarnos de que todo funcione correctamente.
Primero, hagamos un ping a todos los hosts en nuestro inventario:
ansible all -m ping
Desglosemos este comando:
ansible: Este es el comando base para ejecutar Ansible.
all: Esto le dice a Ansible que se ejecute en todos los hosts del inventario.
-m ping: Esto especifica el módulo de Ansible a utilizar. El módulo ping comprueba si los hosts responden.
Si ves "SUCCESS" para ambos hosts, significa que Ansible puede conectarse y comunicarse con estos hosts correctamente.
A continuación, intentemos ejecutar un comando simple en todos los hosts:
ansible all -a "uptime"
Este comando utiliza el módulo de comando de Ansible (el predeterminado cuando no se especifica ningún módulo con -m) para ejecutar el comando uptime en todos los hosts. El comando uptime muestra cuánto tiempo ha estado en funcionamiento el sistema.
Esta salida muestra que Ansible ejecutó correctamente el comando uptime en ambos hosts. El estado "CHANGED" indica que el comando se ejecutó correctamente y produjo una salida.
Consejo: Puedes ver una advertencia de desaprobación "Distribution ubuntu 22.04 on host localhost should use /usr/bin/python3", que se debe a que el intérprete de Python predeterminado se cambió en versiones más recientes de Ubuntu.
Si deseas suprimir esta advertencia, puedes agregar la siguiente línea al archivo /etc/ansible/hosts:
Esta línea le dice a Ansible que utilice Python 3 explícitamente para todos los hosts. Después de agregar esta línea, puedes ejecutar el comando ansible all -m ping nuevamente para verificar que la advertencia ya no aparezca.
Resumen
¡Felicidades! En este laboratorio, has instalado y configurado con éxito Ansible en un sistema Ubuntu. Has aprendido cómo:
Actualizar los paquetes del sistema para garantizar un entorno estable para Ansible.
Instalar Ansible utilizando el gestor de paquetes.
Configurar la autenticación basada en claves SSH para conexiones seguras y sin contraseña.
Crear y configurar un archivo de inventario de Ansible para definir los hosts gestionados.
Probar la conectividad de Ansible y ejecutar comandos básicos en los hosts gestionados.
Estos pasos fundamentales proporcionan un sólido punto de partida para utilizar Ansible para automatizar diversas tareas de TI, desde la ejecución de comandos simples hasta la gestión de configuraciones complejas y la implementación de aplicaciones.
Recuerda, este laboratorio utilizó localhost con fines demostrativos, pero en escenarios del mundo real, normalmente gestionarías múltiples hosts remotos. Los principios y comandos que has aprendido aquí se pueden aplicar fácilmente a la gestión de servidores remotos en toda tu infraestructura.
A medida que continúes tu viaje con Ansible, descubrirás su poder para simplificar las operaciones y mejorar la productividad en la administración de sistemas y las prácticas de DevOps. Considera explorar los playbooks de Ansible a continuación, que te permiten automatizar tareas y flujos de trabajo más complejos.