Previamente necesario tener instalado Ansible y sshpass en nuestro ordenador.
Crear estructura de archivos de nuestro proyecto de Ansible
Primero vamos a crear una estructura base de nuestro proyecto que contiene:
- Archivo de inventario llamado hosts con los equipos donde vamos a desplegar
- Archivo ansible.cfg que le dice a Ansible donde encontrar el archivo de inventario.
- Archivo un archivo de playbook llamado site.yml con instrucciones para ejecutar la implementación
- Estructura de carpeta de roles para contener el rol webservers
Crear archivo hosts
Definimos un grupo llamado webservers en el archivo hosts con el nombre de host o IP de la maquina o máquinas destino.
Verificar comunicación con el servidor
Con el módulo ping de Ansible comprobamos que hay conexión.
Con el módulo command le pedimos que nos conteste con ‘Test exitoso’
Crear archivo de playbook
En este paso creamos el contenido de site.yml con las instrucciones necesarias para instalar un servidor web Apache en nuestro servidor.
- hosts: webservers hace referencia al grupo de servidores en el archivo hosts.
- become: yes activa la ejecución del comando sudo para permitir instalar aplicaciones.
- handlers o controladores son llamados por las tareas, en este caso la tarea ‘Habilitar MOD_REWRITE’ llama al controlador ‘RESTART APACHE2’
Ejecutar archivo de playbook
Ejecutamos el archivo site.yml para desplegar la tarea con la instrucción:
sudo ansible-playbook -v site.yml
Verificamos que se ha instalado el servidor Apache2 en el destino.
Personalizar playbook con algunas opciones
Vamos a decirle a Apache que escuche por otro puerto, por ejemplo el 8081. Creamos un archivo site81.yml para el ejemplo.
Ejecutamos ansible-playbook y comprobamos que escucha por el puerto solicitado.




Crear playbook y definir roles
Otra manera de desplegar la infraestructura es mediante roles, al principio creamos una estructura en la carpeta roles con el rol webservers. Vamos a crear un nuevo playbook que llame a este rol, lo vamos a llamar siteByRol.yml
El código para el rol esta en el archivo main.yml de la carpeta task
El rol tiene dos tareas:
- Desplegar Apache2.
- Copiar un archivo index.html en la raiz de Apache2 reemplazando al original. El archivo lo creamos en la carpeta files
Ejecutamos el playbook y comprobamos que se ha desplegado correctamente.


















