instalar y configurar aplicaciones con Ansible

Y… ¡lo prometido es deuda! Volvemos por aquí para hablar de Cómo instalar y configurar aplicaciones con Ansible de Red Hat. En esta tercera entrega de la serie hablaremos de los entresijos de Ansible poniendo la teoría en práctica. Demostraremos, paso a paso, cómo instalar y configurar un servidor web con Ansible.

Si aún no la conoces, puedes pasarte por “¿Qué es Red Hat Ansible?” para conocer esta herramienta y por “¿Cómo funciona Red Hat Ansible?” para comprender cómo son la arquitectura y estructura de la herramienta de automatización por excelencia.

¿Listos? ¡Empezamos!

Cómo instalar y configurar aplicaciones con Ansible

Veremos cómo instalar y configurar aplicaciones con Ansible. Más concretamente, cómo instalar un servidor web. ¿Cómo lo haremos? El objetivo será instalar un servidor web Apache, cambiar el puerto que tiene por defecto a 8080 y añadir un index.html personalizado.

 

¿Qué debemos tener en cuenta antes de empezar?

1. Tener Red Hat Ansible instalado con nodo de control

2. Disponer de una máquina virtual para instalar Apache

3. Establecer el nombre de dicha máquina en el inventario

4. Crear el playbook

Manos a la obra

Si estamos en un entorno EL (Red Hat, CentOS o Fedora) y queremos tener la última versión de Ansible, podemos utilizar los siguientes comandos:

              # Si es EL 7 cambia dnf por yum
              sudo dnf install epel-release # solo para CentOS
              sudo dnf install ansible

 

studentbastion

Ahora tendremos que configurar el inventario que tenemos por defecto para añadir la máquina virtual que configuraremos con Ansible.

Es posible que no tengas un servidor DNS que resuelva el hostname de la máquina virtual o no puedas modificar el fichero /etc/hosts. En ese caso, es posible hacer una resolución en el inventario gracias a la variable ansible_host, que permite indicar la dirección IP de la máquina virtual.

 

instalar y configurar aplicaciones con Ansible

Creación del playbook con RedHat Ansible

Es el momento de crear el playbook. En este ejemplo: deploy_apache.yaml, donde tenemos que indicar a qué servidor vamos a acceder y qué tareas se van a realizar.

Para poder definir las tareas debemos utilizar los módulos de Ansible. Emplearemos el comando ansible-doc con la opción -l, que mostrará la lista de todos los módulos disponibles para buscar los que vamos a necesitar por medio de su descripción. También podríamos acceder a la página de documentación oficial de Ansible docs.ansible.com, donde se encuentran organizados por categorías (monitoring, bbdd, cloud, etc..).

Ya sea desde la documentación oficial o con el comando ansible-doc, veremos los diferentes atributos que podemos utilizar en cada uno de los módulos. Además, también encontraremos diferentes ejemplos para conocer y entender un poco mejor cómo funcionan estos módulos.

instalar y configurar aplicaciones con Red Hat Ansible

Con este ejemplo, podemos observar la estructura e identación del playbook. El index.html que he utilizado podéis descargarlo en Github (abre el enlace aquí)

Cómo empezar a crear el playbook

Siempre comenzaremos el playbook con una lista (guión) y la buena práctica es indicar el atributo “name”, para dar una descripción de qué es lo que hace este playbook.

Con el atributo “host” indicamos las máquinas a las cuales vamos a acceder. En este caso, atacaremos solo a “apache”, pero también podríamos haber indicado “webserver, el grupo al que pertenece la máquina apache.

Después del atributo “tasks” empezaremos a definir todas las tareas a realizar. Cada una de estas tareas comenzará con un guión para indicar el inicio de una lista. De nuevo, trabajar bien es más eficiente y una buena práctica es indicar primero el atributo “name” para dar una pequeña descripción de qué es lo que hace cada una de estas tareas.

A continuación indicamos el nombre del módulo junto con los atributos parametrizables.

Módulos utilizados en el playbook

En este playbook hemos utilizado los siguientes módulos:

dnf → Permite instalar, actualizar y desinstalar paquetes en sistemas centos/fedora/rhel. Con este módulo instalamos el paquete httpd

copy → Permite copiar ficheros del nodo de control hacia las máquinas gestionadas. Con este módulo hemos copiado el index.html que teníamos en localhost al directorio /var/www/html

lineinfile → Es un modulo muy potente que permite hacer cambios en ficheros. En este playbook lo hemos utilizado para buscar la línea que comienza por “Listen 80” y reemplazarla por “Listen 8080”

systemd → Permite interactuar con los servicios (iniciarlos, pararlos, reiniciarlos..). En este caso, lo hemos utilizado para iniciar el servicio httpd y que sea persistente a reinicios del sistema.

firewalld → Este módulo permite crear reglas de firewall con firewalld. En el ejemplo, lo hemos utilizado para levantar el puerto 8080 con protocolo TCP de forma inmediata y con persistencia a reinicios del sistema.

testear que todo funcione correctamente

Ahora, para comprobar la sintaxis del playbook y cerciorarnos de que hemos definido los módulos y atributos en los niveles de indentación correspondiente, podemos utilizar el siguiente comando:

ansible-playbook deploy_apache.yaml --syntax-check

 

En caso de estar todo bien, procedemos a iniciar el playbook con el siguiente comando:

ansible-playbook deploy_apache.yaml -u root -k

 

Buenas prácticas

Se utiliza la opción -u para indicar con qué usuario realizaremos la conexión ssh y el parámetro -k para permitir a ansible preguntar por la contraseña de conexión.

Una buena práctica es establecer conexión con claves ssh, así no es necesario escribir la contraseña cada vez que se ejecute un playbook.

Adicionalmente, es también buena práctica configurar el usuario de conexión en el fichero ansible.cfg.

Y para terminar…

Por último, solo nos queda hacer la prueba del algodón. Si accedemos a la máquina donde hemos instalado apache a través del puerto 8080, deberemos de ver el index.html que hemos copiado con Ansible:

ejemplo en Apache de instalar y configurar aplicaciones con Ansible

Bonus track

¿Quieres aprender los fundamentos de la automatización con Red Hat Ansible? ¡Esto es para ti!

Aprovecha esta oportunidad y haz el DO007 Ansible Basics: Automation Technical Overview de forma totalmente gratuita. El curso cubre los fundamentos de todo lo que debes saber sobre Ansible, incluyendo características clave como los playbooks, y el automation controller.

 

¡Esperamos que te haya sido de utilidad!

Esta es sólo una pequeña explicación sobre Red Hat Ansible. 

Si estás interesado o interesada en soluciones de automatización y gestión de IT no dudes en pedirnos más información. ¡Será un placer ayudarte!

Además, si tienes alguna duda, será un placer ayudarte. Puedes ponerte en contacto con nosotros a través del Formulario de Contacto o enviando un correo a info@essiprojects.com

juan antonio coello

Juan Antonio Coello
DevOps Engineer & Red Hat Instructor

¿QUIEN SOMOS?

Somos especialistas en DevOps Ecosystem y ayudamos a las empresas a revolucionar su infrastructura de servicios y aplicaciones para soportar su éxito.

A través de proyectos de consultoría, integración y formación técnica certificada, ofrecemos soluciones basadas en Open Hybrid Cloud Pass, Management & Automation, Monitoring & Performance, Middleware Solutions y Email & Collaboration.

essi-projects-logo
¡Únete a nuestra newsletter!
Mantente al día de las últimas novedades del sector IT

POSTS RECIENTES

CATEGORÍAS

Etiquetas