Cómo instalar Ansible AWX con Nginx Reverse Proxy en Ubuntu
AWX es una aplicación web de código abierto que proporciona la interfaz de usuario, la API REST y el motor de tareas para Ansible. Es la versión de código abierto de la Torre Ansible. AWX te permite gestionar los playbooks de Ansible, los inventarios y programar trabajos para que se ejecuten mediante la interfaz web.
En este tutorial, vamos a mostrarte cómo instalar y configurar la AWX en el servidor Ubuntu. Vamos a instalar la AWX con Nginx como proxy inverso y construida sobre la conexión segura HTTPS.
Requisitos previos
- Servidor Ubuntu >= 18.04
- Memoria RAM +4GB y 2 núcleos
- Privilegios de root
Qué vamos a hacer
- Instalar Docker y Ansible
- Instalar paquetes adicionales
- Descargar y configurar el código fuente de Ansible AWX
- Instalar Ansible AWX
- Instalar y configurar Nginx como proxy inverso
- Configurar el cortafuegos UFW
- Prueba de
Paso 1 – Instalar Docker y Ansible
En primer lugar, vamos a instalar los principales paquetes necesarios para la instalación de AWX, es decir, Docker y el propio Ansible. Antes de instalar estos paquetes, actualiza el repositorio de Ubuntu con el siguiente comando.
sudo apt update
Ahora instala el Docker y el Ansible.
sudo apt install ansible -y sudo apt install docker.io -y
Una vez completada la instalación, comprueba el Docker y el Ansible utilizando los siguientes comandos.
docker version ansible --version
A continuación se muestra el resultado.
Paso 2 – Instalar paquetes adicionales
Ahora vamos a instalar paquetes adicionales para la instalación de AWX. Instalaremos el paquete ‘python-pip’ en el sistema, y luego instalaremos docker-compose y docker-py desde el repositorio python de PyPI.
Instala el paquete ‘python-pip’ con el comando apt que aparece a continuación.
sudo apt install python-pip -y
Una vez completada la instalación, instala los paquetes docker-compose 1.9.0 y docker-py desde el repositorio PyPI utilizando los comandos pip que aparecen a continuación.
pip install docker-compose==1.9.0 pip install docker-py
A continuación, tenemos que instalar el nodejs y el npm en el servidor.
Ejecuta el siguiente comando.
sudo apt install nodejs npm -y
Una vez completado, actualiza el npm a la última versión.
npm install npm --global
Y como resultado, todas las dependencias han sido instaladas en el sistema. Y ya estamos listos para instalar el AWX.
Paso 3 – Descargar el código fuente de AWX y configurarlo
En este paso, descargaremos el código fuente de AWX y configuraremos el archivo de inventario para la instalación de AWX.
Descarga el código fuente de AWX desde el repositorio git y ve al directorio de instalación de awx.
git clone https://github.com/ansible/awx.git cd awx/installer/
Después, genera la nueva clave secreta para el awx utilizando el comando openssl que aparece a continuación.
openssl rand -hex 32
Copia la clave secreta generada en tu nota.
Ahora edita el archivo de configuración ‘inventario’.
vim inventory
Cambia el directorio ‘postgres_data_dir’ por el directorio ‘/var/lib/pgdocker’.
postgres_data_dir=/var/lib/pgdocker
Cambia el ‘puerto_host’ a ‘8080’.
host_port=8080
Descomenta la línea ‘use_docker_compose’ y cambia el valor a ‘true’, porque vamos a gestionar el awx utilizando el docker compose.
use_docker_compose=true
Ahora asegúrate de que el directorio ‘docker_compose_dir’ se encuentra en el directorio ‘/var/lib/awx’.
docker_compose_dir=/var/lib/awx
Cambia las credenciales de ‘pg_password’, ‘rabbitmq_password’, ‘rabbitmq_erlang_cookie’, ‘admin_user’ y ‘admin_password’ por tus propias credenciales de contraseña.
... pg_password=hakaseposgresawx ... rabbitmq_password=hakaserabbitmqawx rabbitmq_erlang_cookie=cookiemonster ... admin_user=hakase admin_password=hakasepass ...
Después, cambia la clave secreta de la configuración de awx utilizando la clave generada en la parte superior.
secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
Luego descomenta el ‘project_data_dir’ y deja el valor por defecto.
project_data_dir=/var/lib/awx/projects
Guarda y cierra la configuración.
A continuación se edita el archivo ‘inventario’.
grep -v '^#' inventory archivo de configuración del inventario.
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir=/var/lib/pgdocker
host_port=8080
use_docker_compose=true
docker_compose_dir=/var/lib/awx
pg_username=awx
pg_password=hakaseposgresawx
pg_database=awx
pg_port=5432
rabbitmq_password=hakaserabbitmqawx
rabbitmq_erlang_cookie=cookiemonster
admin_user=hakase
admin_password=hakasepass
create_preload_data=True
secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
project_data_dir=/var/lib/awx/projects
Y como resultado, estamos listos para instalar el awx en la siguiente etapa.
Paso 4 – Instalar el AWX de Ansible
Instala el awx utilizando el siguiente comando ansible-playbook.
ansible-playbook -i inventory install.yml
El playbook realizará algunas tareas como la descarga de imágenes docker y la creación de nuevos contenedores postgresql, memcached, rabbitmq, la aplicación web awx y la tarea awx.
Y a continuación se muestra el resultado.
A continuación, ve al directorio ‘/var/lib/awx’ y obtendrás la configuración ‘docker-compose.yml’. A continuación, comprueba todos los contenedores docker disponibles utilizando el comando docker-compose.
cd /var/lib/awx docker-compose ps
Y se te mostrarán los contenedores awx como se indica a continuación.
Además, puedes comprobar los registros del servicio ‘task’ utilizando el siguiente comando.
docker-compose logs task
Paso 5 – Instalar y configurar Nginx como proxy inverso
Después de instalar el awx, instalaremos y configuraremos el Nginx como proxy inverso para el awx que ejecuta el puerto ‘8080’.
Instala Nginx con el siguiente comando apt.
sudo apt install nginx -y
Una vez completada la instalación, ve al directorio ‘/etc/nginx/sites-available/’ y crea una nueva configuración de host virtual llamada ‘awx’ utilizando el editor vim.
cd /etc/nginx/sites-available/ vim awx
Ahora pega la configuración de abajo.
server { listen 80; server_name awx.hakase-labs.io; add_header Strict-Transport-Security max-age=2592000; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443 ssl http2; server_name awx.hakase-labs.io; access_log /var/log/nginx/awx.access.log; error_log /var/log/nginx/awx.error.log; ssl on; ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; ssl_session_timeout 5m; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://10.5.5.20:8080/; } }
Cambia el nombre de dominio y la dirección IP de proxy_pass por los tuyos, luego guarda y sal.
Ahora activa el host virtual ‘awx’ y prueba la configuración de nginx.
ln -s /etc/nginx/sites-available/awx /etc/nginx/sites-enabled/ nginx -t
Asegúrate de que no hay ningún error en la configuración de nginx, y luego reinicia el servicio nginx.
sudo systemctl restart nginx
Como resultado, la instalación y configuración de Nginx como proxy inverso para awx ha finalizado.
Paso 6 – Configurar el cortafuegos UFW
Añade los servicios SSH, HTTP y HTTPS a la configuración del cortafuegos UFW.
ufw allow ssh ufw allow http ufw allow https
Ahora inicia y habilita el servicio de cortafuegos ufw.
ufw enable
Escribe «y» en «sí» y el cortafuegos ufw estará configurado.
Paso 7 – Prueba
Abre tu navegador web y escribe la URL de tu awx en la barra de direcciones.
https://awx.hakase-labs.io
Y se te mostrará la página de inicio de sesión de awx como se indica a continuación.
Ahora escribe el usuario ‘hakase’ y la contraseña ‘hakasepass’, y haz clic en el botón ‘iniciar sesión’.
Ahora obtendrás el panel de administración de awx como se muestra a continuación.
Y la instalación de Ansible AWX con el proxy inverso Nginx se ha completado con éxito.