Guía de Ansible AWX: Uso y configuración básicos
AWX es una aplicación web de código abierto que proporciona una interfaz de usuario, una API REST y un motor de tareas para Ansible. Es la versión de código abierto de la Torre Ansible. El AWX te permite gestionar los playbooks de Ansible, los inventarios y programar trabajos para que se ejecuten mediante la interfaz web.
En este tutorial, te mostraremos el uso básico de Ansible AWX. Para ello, necesitas un servidor que ya tenga instalado Ansible AWX. Cubrimos algunas configuraciones básicas de Ansible AWX que debes conocer, como la configuración de las credenciales, los inventarios, la configuración y la ejecución de plantillas de trabajo, etc. Si aún no tienes instalado Ansible, consulta este tutorial:https://www.howtoforge.com/how-to-install-ansible-awx-with-nginx-reverse-proxy-on-ubuntu-1804/.
Requisitos previos
- 2 o 3 servidores
- 10.5.5.20 ansible-awx
- 10.5.5.21 lemp
- Conocimientos básicos sobre Ansible
- Privilegios de root
Qué vamos a hacer:
- Instalación y configuración del entorno
- Configurar credenciales
- Configurar inventarios
- Configurar proyectos
- Configurar plantillas de trabajo
- Ejecutar trabajos
Paso 1 – Instalación y configuración del entorno
En este tutorial, vamos a desplegar y ejecutar el libro de jugadas de Ansible para la instalación básica de LEMP mediante el panel Ansible AWX.
Tenemos dos servidores para el propio awx y la máquina de destino.
10.5.5.20 ansible-awx
10.5.5.21 lemp
Ahora vamos a desplegar el libro de jugadas como el usuario llamado ‘hakase’ y utilizando la autenticación SSH basada en claves. Por tanto, asegúrate de que ya has configurado el usuario y la autenticación basada en clave en la máquina de destino ‘lemp’.
Haz la prueba utilizando el siguiente comando desde el servidor‘ansible-awx‘.
su - hakase
ssh [email protected]
Asegúrate de que has iniciado la sesión sin ninguna contraseña.
Ahora el usuario ‘hakase’ debe tener la contraseña de root sin necesidad de ejecutar tareas.
En la máquina de destino‘lemp‘, ejecuta el comando sudo como se indica a continuación.
su - hakase
sudo su
Asegúrate de que has introducido los privilegios de root sin la contraseña.
Ahora debes instalar los paquetes python en todas las máquinas de destino gestionadas por Ansible.
sudo apt install python -y
Paso 2 – Configurar las credenciales
En primer lugar, tenemos que configurar las Credenciales AWX de Ansible. Se utilizan para la autenticación cuando se lanzan y ejecutan trabajos contra servidores gestionados, se sincronizan con fuentes de inventario y se importan proyectos.
Por defecto, Ansible AWX admite muchas credenciales, como la de la máquina virtual a través de la autenticación SSH, la de Amazon Web Services, la de Google Compute Engine, la de OpenStack, la contraseña de Vault, la de Source Control, etc.
Para configurar las credenciales, haz clic en el menú«Credenciales» de la izquierda y haz clic en el botón «+» de la derecha.
Ahora escribe las credenciales‘NOMBRE‘ y‘DESCRIPCIÓN’, y luego especifica el‘TIPO DE CREDENCIAL‘ a‘Máquina’.
Sencillamente, la credencial ‘Máquina’ te permitirá utilizar la autenticación SSH para gestionar servidores. Es compatible tanto con la autenticación basada en contraseñas como con la basada en claves.
Para esta guía, utilizaremos la autenticación basada en clave. Por tanto, escribe el nombre de usuario y pega las claves privadas de ese usuario.
Luego haz clic en el botón«GUARDAR«.
Como resultado, se ha creado el nuevo tipo de credenciales Ansible AWX ‘Máquina’.
Paso 3 – Configurar inventarios
Los inventarios son grupos de servidores anfitriones que gestiona Ansible AWX. Los inventarios te permiten crear un grupo con varios servidores anfitriones en él. Y facilita la gestión de diferentes servidores con diferentes entornos.
Para gestionar y aprovisionar servidores, debemos crear un nuevo grupo de inventario y luego añadir servidores anfitriones en ese grupo de inventario.
Para añadir un nuevo inventario, haz clic en el menú«Inventarios» de la izquierda, luego haz clic en el botón «+ » y elige el «Inventario».
Escribe el‘NOMBRE‘ y la‘DESCRIPCIÓN’ del inventario, y luego haz clic en el botón ‘GUARDAR‘.
Ahora haz clic en la pestaña«HOSTS» y haz clic en el botón «+ « para añadir nuevos hosts.
Escribe el ‘NOMBREDEL HOST’, la ‘DESCRIPCIÓN‘ y las‘VARIABLES’ con la configuración adicional para la dirección IP de la máquina de destino ‘ansible_host: 10.5.5.21’.
Ahora haz clic en el botón«GUARDAR«.
A continuación, debemos asegurarnos de la configuración de los hosts comprobando los mismos mediante el comando ping.
Vuelve a la pestaña«HOSTS», marca el servidor de nombres de tus hosts y haz clic en el botón«EJECUTAR COMANDOS«.
Ahora elige el‘MÓDULO‘ llamado‘ping‘, haz clic en el botón de búsqueda dentro del‘CREDENCIAL DE LA MÁQUINA‘ y‘SELECCIONA’ el tuyo, luego haz clic en el botón‘LANZAR‘.
Y serás redirigido a la nueva página y a continuación se muestra el resultado.
Se ha creado un nuevo inventario y se ha añadido en él el servidor de la máquina de destino.
Paso 4 – Configurar los proyectos
Los proyectos se representan como Ansible Playbooks en la AWX. Son colecciones de Ansible Playbooks que podemos gestionar a través del directorio local del proyecto o utilizando el sistema SCM como Git, Subversion, Mercurial y RedHat Insights.
Para crear nuevos proyectos, haz clic en el menú«Proyectos» de la izquierda y haz clic en el botón «+».
Escribe el‘NOMBRE’ de tu proyecto y la‘DESCRIPCIÓN’, luego elige el‘TIPO DE SCM‘ a‘Git‘ y pega el repositorio de tu libro de jugadas.
Ahora haz clic en el botón ‘GUARDAR‘ y como resultado, se ha creado un nuevo proyecto para el libro de jugadas.
Además:
Si quieres crear un nuevo proyecto con el tipo de SCM‘Manual‘, puedes crear un nuevo directorio de playbooks situado en el directorio‘/var/lib/awx/projects‘.
El directorio ‘/var/lib/awx/projects’ es el directorio de proyectos por defecto para tus playbooks de Ansible si utilizas la versión docker de AWX con el‘project_data_dir’ activado.
Paso 5 – Crear nuevas plantillas de trabajo
La plantilla de trabajo es la propia definición de la ejecución de los libros de juego Ansible. Así que, para crear una nueva plantilla de trabajo o ejecutar la plantilla de trabajo, necesitamos añadir el playbook de Ansible de nuestro ‘Proyecto’, las ‘Credenciales’ para la autenticación, y las máquinas de destino que se almacenan en los ‘Inventarios’.
Para esta guía, ya hemos creado un nuevo Proyecto, Credenciales e Inventario. Por lo tanto, sólo tienes que hacer clic en el menú«Plantillas» de la izquierda, luego hacer clic en el botón » + » y elegir la opción«Plantilla de trabajo«.
Ahora tienes que escribir el‘NOMBRE‘ y la‘DESCRIPCIÓN’ del trabajo. Luego elige el ‘INVENTARIO‘, el‘CREDENCIAL‘ y el‘PROYECTO‘. Y después de eso, especifica el ‘LIBRO DE JUEGO‘ que quieres ejecutar y desplegar.
Y como resultado, se ha creado la nueva plantilla de trabajo Ansible AWX.
Paso 6 – Ejecutar la plantilla de trabajo
Después de crear la nueva plantilla de trabajo, ejecutaremos la plantilla de trabajo y desplegaremos los ‘Proyectos’ de Playbooks en los hosts de destino en el ‘Inventario’.
Haz clic en el menú«Plantillas» de la izquierda y obtendrás una lista de las plantillas de trabajo disponibles.
Una vez que el trabajo esté terminado, obtendrás el signo verde dentro del nombre de la plantilla de trabajo.
Haz clic en el signo verde dentro del nombre de la plantilla de trabajo y se te mostrará el resultado real de ese trabajo.
El trabajo se ha completado con éxito, y en la máquina de destino se ha instalado la pila LEMP a través de Ansible AWX.
Paso 7 – Prueba de la máquina de destino
Prueba el nombre de dominio de la máquina de destino. La configuración del nombre de dominio se almacena en la configuración‘roles/web/vars/main.yml‘.
Comprobando los servicios Nginx y PHP-FPM mediante los comandos systemctl.
systemctl status nginx
systemctl status php7.2-fpm
Comprobación de la base de datos MySQL en la máquina de destino. Detalla la configuración de la base de datos MySQL almacenada en el archivo de configuración ‘roles/db/vars/main.yml’.
Como resultado, la pila LEMP se ha instalado en la máquina de destino a través de Ansible AWX.