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

  1. Instalar Docker y Ansible
  2. Instalar paquetes adicionales
  3. Descargar y configurar el código fuente de Ansible AWX
  4. Instalar Ansible AWX
  5. Instalar y configurar Nginx como proxy inverso
  6. Configurar el cortafuegos UFW
  7. 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.

Instalar Docker

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

Instalar Python Pip

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.

Libro de jugadas de Ansible

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.

Contenedor AWX

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

Proxy inverso Nginx para Ansible AWX

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.

Inicio de sesión de Ansible AWX

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.

Panel de control de Ansible AWX

Y la instalación de Ansible AWX con el proxy inverso Nginx se ha completado con éxito.

Referencia

https://github.com/ansible/awx

También te podría gustar...