Volver al blog

Automatización de la configuración del servidor usando Ansible y Ubuntu 20.04

Automatización de la configuración del servidor usando Ansible y Ubuntu 20.04

Introducción

Hoy en día, los servidores deben crearse y destruirse con mucha frecuencia. Esto se debe a que, a veces, los servidores reciben mucha carga de ejecución, mientras que en otras ocasiones la carga disminuye, desperdiciando así los recursos del sistema. Un ejemplo común son los sitios web de comercio electrónico durante las temporadas festivas que atraen mucho tráfico. Cuando la naturaleza de la aplicación es ser escalable, siempre existe la necesidad de contar con herramientas de gestión de configuración para facilitar el proceso general de creación de servidores. Ansible es una excelente herramienta de gestión de configuración que automatiza la creación de servidores mediante procedimientos estándar, reduciendo los errores humanos.

Ansible no requiere la instalación de software especial en los nodos de los servidores. Cuenta con todas las herramientas necesarias para escribir, compilar y facilitar la automatización de scripts. Este tutorial detalla cómo utilizar Ansible para automatizar los pasos contenidos en nuestro Cómo configurar su servidor Ubuntu tutorial.

Requisitos previos

Para completar esta guía utilizaremos Ubuntu 20.04. Además, también necesitará:

  • Un nodo de control de Ansible: Una máquina Ubuntu que ejecute la última versión de Ubuntu. El binario maestro de Ansible debe estar instalado y ejecutándose en esta máquina. Esta máquina debe poder conectarse a los nodos de Ansible. Para estas conexiones, debe utilizar claves SSH. Para evitar problemas al conectarse, asegúrese de que su nodo de control de Ansible tenga un cortafuegos habilitado. Si necesita ayuda, consulte nuestro Instalación y configuración de Ansible en Ubuntu 20.04 blog.

  • Hosts de Ansible: Se necesitan uno o más hosts a los que conectarse. Los hosts son esencialmente los nodos administrados en Ansible. Estos deben ser servidores Ubuntu.

Funciones del Playbook de Ansible

Puede configurar manualmente todos los pasos mencionados a continuación. Sin embargo, automatizaremos esta ejecución. Cuando ejecute este playbook, realizará las siguientes operaciones en su máquina:

  1. Instalará aptitude, que es el preferido por Ansible como su gestor de paquetes.

  2. Creará un grupo administrativo wheel con permisos sudo sin contraseña.

  3. Creará un nuevo usuario sudo.

  4. Copiará una clave SSH local en authorized_keys. Esto se utilizará para un nuevo usuario administrativo en un host remoto.

  5. Deshabilitará la autenticación basada en contraseña para el usuario root.

  6. Instalará los paquetes necesarios.

  7. Configurará el cortafuegos UFW para permitir únicamente conexiones SSH. Cualquier otra conexión será bloqueada.

Una vez que el Playbook termine de ejecutarse, habrá un nuevo usuario disponible. Puede utilizar este usuario para iniciar sesión en el sistema.

Uso del Playbook de Ansible

Para configurar el servidor, necesitará el playbook de configuración inicial del servidor y sus dependencias. Si lo está utilizando por primera vez, deberá clonar el repositorio utilizando el siguiente enlace:

Si el repositorio ya existe en su sistema, ejecute el siguiente comando para obtener las últimas actualizaciones:

Obtendrá la siguiente estructura de archivos en su máquina:

A continuación se presenta la descripción de los archivos:

  • vars/default.yml: Este archivo contiene las variables para configurar el nodo de Ansible.

  • playbook.yml: Este archivo contiene las tareas que se van a ejecutar en el servidor.

El archivo vars/default.yml se ve algo así:

A continuación se presenta la descripción de estas variables. Si desea editarlas, puede reemplazar sus valores por los suyos propios:

  1. create_user: Este es el usuario que se crea. Este usuario tiene privilegios de sudo.

  2. copy_local_key: Esto contiene la ruta a la clave pública SSH local. Se copiaría al servidor remoto como authorized_key.

  3. sys_packages: Si desea instalar uno o más paquetes en su servidor, menciónelos aquí como un array.

Una vez que haya editado este archivo, guarde el contenido. Después de eso, en nano, presione CTRL+X , Y. Luego, ENTER para guardar el contenido del archivo.

Ahora está listo para ejecutar este playbook en múltiples servidores. Por defecto, los Playbooks están listos para ejecutarse en los servidores de su inventario. Si desea usar el Playbook en algunos servidores específicos, puede usar la opción -l. Ahora suponga que el servidor remoto tiene múltiples usuarios, puede usar la opción -u para mencionar con qué usuario conectarse.

Si el nombre de su servidor es my_server y el nombre de usuario es my_user, luego ejecute el siguiente comando para ejecutar en los nodos de Ansible:

Obtendrá una salida similar a esta:

Una vez que esta ejecución haya finalizado, puede conectarse usando el siguiente comando:

Recuerde que my_user era el nombre que habíamos usado en el archivo vars/default.yml . También deberá cambiar la IP del servidor por la IP de su servidor en el comando anterior. Si había proporcionado la variable copy_local_key para apuntar a alguna clave SSH personalizada, especifique la ubicación con la opción -i :

A continuación, inicie sesión en su servidor para verificar las reglas del cortafuegos UFW:

Obtendrá la siguiente salida:

La salida anterior confirma que el cortafuegos UFW se ha finalizado correctamente. Este fue el último paso de nuestro playbook. Si esto se realiza correctamente, significa que la ejecución ha sido exitosa.

El contenido del Ansible Playbook

Los archivos del Playbook que utilizamos en este tutorial están alojados en ansible-playbooks/setup_ubuntu1804 en master · do-community/ansible-playbooks · GitHub. Si desea ver el contenido de cada archivo para usarlo o editarlo, haga clic en el botón Raw en la parte superior de cada script.

Para una referencia rápida, compartiremos el contenido completo del Playbook junto con los archivos relevantes:

  • vars/default.yml

Este archivo contiene los valores que serán utilizados por las tareas del playbook. Estos incluyen valores como el nombre del usuario, privilegios, claves SSH, paquetes a instalar como parte de la configuración inicial, etcétera:

  • playbook.yml

El archivo playbook.yml contiene los trabajos que se van a ejecutar. Primero, el archivo enumera todos los hosts que se van a definir como objetivo. Si desea especificar todos los servidores, establezca el valor de esta clave en all. A continuación, si desea especificar las tareas que se ejecutarán utilizando privilegios de sudo, establezca el valor de la variable become: true. Finalmente, este archivo debe incluir el contenido del anterior vars/default.yml . Incluimos esto a continuación para cargar la configuración de este archivo:

Conclusión

La automatización es clave en TI, ya que garantiza que todos los procesos estén libres de errores y sigan las prácticas y procedimientos estándar. Dado que la mayoría del software actual se entrega a través de la web y tiene una naturaleza distribuida, se ha convertido en una tarea cotidiana crear nuevos servidores, por ejemplo, para diferentes entornos como pruebas (staging) o producción, o incluso entornos de demostración.

En este tutorial, demostramos cómo lograr la automatización de servidores utilizando Ansible, una herramienta potente y fácil de usar que puede ahorrarle mucho tiempo.

¡Feliz informática!

author

Shreyas Patil

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.