Volver al blog

Instalación y configuración de Ansible en Ubuntu 20.04

Instalación y configuración de Ansible en Ubuntu 20.04

Si es administrador de sistemas, es importante que tenga una forma coherente de gestionar todos los servidores y ordenadores que está utilizando. Los sistemas de gestión de configuración pueden simplificar enormemente el proceso. Gestionan todos los sistemas de manera eficiente desde una ubicación central.

En Linux, hay múltiples sistemas de gestión de configuración disponibles. Por ejemplo, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine, etc. Mientras que herramientas como Puppet y Chef tienden a ser más complejas y avanzadas, Ansible ofrece simplicidad y facilidad de uso. No es necesario instalar ningún software de cliente adicional en los nodos para que Ansible funcione. En su lugar, Ansible utiliza SSH para administrar y automatizar sistemas. Ansible es software de código abierto. También es altamente escalable, consistente y confiable.

Esta guía demuestra cómo instalar y configurar Ansible en Ubuntu 20.04.

Ansible en Ubuntu

Ansible puede realizar tres tipos de automatización:

  • Aprovisionamiento: Puede establecer varios servidores de acuerdo con las necesidades de la infraestructura.

  • Gestión de configuración: Puede realizar varios cambios de configuración de servidores. Por ejemplo, iniciar y detener servicios, instalar aplicaciones y actualizaciones, implementar políticas de seguridad, etc.

  • Despliegue de aplicaciones: Hace que DevOps sea más fácil con el despliegue automatizado de aplicaciones desarrolladas internamente en el sistema de producción.

Ansible puede funcionar perfectamente en casi cualquier entorno de TI – ya sean servidores alojados o tradicionales, plataformas de virtualización o en la nube. También admite la gestión de diversos sistemas como bases de datos, redes, firewalls, dispositivos de almacenamiento y muchos otros. CloudSigma también es compatible con Ansible para nuestra infraestructura en la nube.

Requisitos previos

Para esta guía, necesitamos un par de máquinas:

  • Nodo de control: El nodo de control es el nodo central que se conecta a todos los nodos host, emite tareas y gestiona varios aspectos del sistema. El nodo de control puede ser cualquier cosa – una máquina local o un servidor remoto.

  • Nodo host: Los hosts de Ansible son las máquinas que el nodo de control de Ansible puede automatizar.

Como sugiere el título de la guía, se espera que todas estas máquinas estén configuradas con Ubuntu 20.04 con los últimos paquetes. Aquí hay una guía rápida sobre configurar un servidor Ubuntu. Debido a que Ansible utiliza SSH para conectarse a las máquinas, todos los nodos host deben estar configurados correctamente con claves SSH con el nodo de control. Asegúrese de que todos los nodos host tengan la clave SSH pública del nodo de control agregada al archivo authentication_keys. Siga nuestro tutorial para aprender cómo generar y agregar claves SSH a servidores Linux.

Paso 1: Instalación de Ansible

En el caso de Ubuntu, no es necesaria ninguna configuración adicional de paquetes o repositorios. Ansible está disponible directamente desde los servidores de paquetes oficiales de Ubuntu. Realizar cualquier cambio a nivel de sistema requiere acceso administrativo – el usuario root o un usuario no root con privilegios de sudo. El archivo sudoers gestiona los permisos de sudo para usuarios y grupos.

Primero, instalaremos Ansible en la computadora que servirá como nodo de control. Para instalar Ansible en el nodo de control, ejecute los siguientes comandos:

Control apt update

Install ansible

Si va a utilizar una contraseña como mecanismo de autenticación SSH, entonces necesita tener el paquete sshpass instalado:

Install sshpass

Paso 2: Configuración del archivo de inventario

En Ansible, el archivo de inventario contiene información sobre todos los hosts que ansible gestionará. Pueden ser decenas o cientos de servidores registrados en el archivo de inventario. Los servidores también se pueden dividir en grupos y subgrupos. Generalmente, el archivo de inventario se utiliza para establecer variables que serán válidas solo para los hosts específicos o grupos. Es una técnica útil para escribir playbooks y plantillas. Ciertas variables también pueden influir en cómo se ejecuta un playbook.

Ansible viene con un archivo de inventario predeterminado. Primero, abra el archivo en un editor de texto:

Ansible hosts file

Por defecto, el archivo de inventario contiene varios ejemplos de referencia. Aquí tiene un ejemplo con un grupo llamado servers que contiene tres servidores diferentes. La variable ansible_python_interpreter define el intérprete de Python para todos los hosts incluidos en el inventario. Con la directiva ansible_user, podemos declarar la cuenta de usuario a la que se conectará Ansible:

Ansible hosts file updated

A continuación, guarde el archivo y cierre el editor. Para comprobar el inventario, ejecute el siguiente comando:

La salida debería ser algo parecido a esto:

Ansible inventory list

Paso 3: Prueba de conexión

Después de configurar el archivo de inventario, debemos probar si Ansible puede conectarse a esos servidores a través de SSH. Podemos hacerlo simplemente haciendo ping a todos los nodos host. Desde el control nodo, haga ping a todos los host nodos:

El módulo ping comprueba lo siguiente:

  • Accesibilidad del host

  • Validez de las credenciales SSH

  • Los hosts pueden ejecutar módulos de Ansible utilizando Python

La salida debería verse algo como esto:

Ansible ping all

Si la respuesta de un nodo en particular es pong, significa que el nodo está listo para ejecutar comandos y playbooks de Ansible en el servidor.

Paso 4: Ejecución de comandos ad hoc

Este es un paso opcional. Sin embargo, puede ser útil para verificar la funcionalidad completa de Ansible en los servidores remotos. Esta sección también puede servir como una introducción básica al uso y configuración adicionales de Ansible. Una vez que hayamos confirmado la conectividad con los nodos, podemos comenzar a ejecutar comandos ad-hoc y playbooks. Cualquier comando que ejecutaría normalmente en los servidores remotos se puede ejecutar con Ansible en todos los servidores.

Aquí, ejecute el siguiente comando. Comprobará el uso del disco en todos los nodos al mismo tiempo:

Ansible all df cmd

También podemos ejecutar varios módulos de Ansible utilizando la función de comandos ad-hoc, al igual que ejecutamos el ping módulo para pruebas. Por ejemplo, el apt módulo funciona con el gestor de paquetes APT en Ubuntu. Puede administrar paquetes en un nodo remoto de Ubuntu. Tenga en cuenta que requiere permisos de root para realizar cambios a nivel de sistema. El nodo remoto debe permitir el inicio de sesión como root o el usuario debe tener permisos para ejecutar tareas administrativas.

En el siguiente ejemplo, Ansible instala Nginx en todos los nodos host:

¿Qué tal si ejecutamos comandos en un solo servidor? Usaremos el apodo del servidor (asignado dentro del archivo de inventario) para especificar el servidor:

Adhoc cmd df selected host

También podemos especificar múltiples servidores. Declare el apodo de cada servidor de destino con dos puntos como delimitador:

Adhoc cmd df multiple hosts

Reflexiones finales

En esta guía, le mostramos un método paso a paso para instalar Ansible y configurar un archivo de inventario para ejecutar comandos ad-hoc desde el nodo de control de Ansible. Una vez configurado, el nodo de control puede ejecutar cualquier comando o playbook que desee ejecutar en los hosts.

¡Feliz informática!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.