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 Ansible Tower. El AWX le permite administrar playbooks, inventarios y programar trabajos de Ansible para que se ejecuten mediante la interfaz web.
En este tutorial, le mostraremos cómo instalar y configurar AWX en el servidor Ubuntu 18.04. Vamos a instalar AWX con Nginx como un proxy inverso y construiremos sobre la conexión segura HTTPS.
Requisito previo
- Servidor Ubuntu 18.04
- Memoria RAM +4GB y 2 Cores
- Privilegios de raíz
Qué haremos:
- 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
- Pruebas
Paso 1:instalar Docker y Ansible
En primer lugar, vamos a instalar los paquetes principales necesarios para la instalación de AWX, es Docker y Ansible. Antes de instalar estos paquetes, actualice el repositorio de Ubuntu usando el siguiente comando.
sudo apt update
Ahora instale Docker y Ansible.
sudo apt install ansible -y
sudo apt install docker.io -y
Una vez completada la instalación, verifique la ventana acoplable y ansible con 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 PyPI python.
Instale el 'python-pip' usando el comando apt a continuación.
sudo apt install python-pip -y
Una vez completada la instalación, instale los paquetes docker-compose 1.9.0 y docker-py desde el repositorio PyPI usando los comandos pip a continuación.
pip install docker-compose==1.9.0
pip install docker-py
A continuación, necesitamos instalar nodejs y npm en el servidor.
Ejecute el siguiente comando.
sudo apt install nodejs npm -y
Una vez que se haya completado, actualice el npm a la última versión.
npm install npm --global
Y como resultado, todas las dependencias se han instalado en el sistema. Y estamos listos para instalar el AWX.
Paso 3:descargue el código fuente de AWX y configure
En este paso, descargaremos el código fuente de AWX y configuraremos el archivo de inventario para la instalación de AWX.
Descargue el código fuente de AWX del repositorio git y vaya al directorio de instalación de awx.
git clone https://github.com/ansible/awx.git
cd awx/installer/
Después de eso, genere la nueva clave secreta para awx usando el comando openssl a continuación.
openssl rand -hex 32
Copie la clave secreta generada en su nota.
Ahora edite el archivo de configuración de 'inventario'.
vim inventory
Cambie 'postgres_data_dir' al directorio '/var/lib/pgdocker'.
postgres_data_dir=/var/lib/pgdocker
Cambie 'host_port' a '8080'.
host_port=8080
Quite el comentario de la línea 'use_docker_compose' y cambie el valor a 'true', porque vamos a administrar el awx usando el docker compose.
use_docker_compose=true
Ahora asegúrese de que 'docker_compose_dir' esté ubicado en el directorio '/var/lib/awx'.
docker_compose_dir=/var/lib/awx
Cambie las credenciales para 'pg_password', 'rabbitmq_password', 'rabbitmq_erlang_cookie', 'admin_user' y 'admin_password' con sus propias credenciales de contraseña.
...
pg_password=hakaseposgresawx
...
rabbitmq_password=hakaserabbitmqawx
rabbitmq_erlang_cookie=cookiemonster
...
admin_user=hakase
admin_password=hakasepass
...
después de eso, cambie la clave secreta de la configuración de awx utilizando la clave generada en la parte superior.
secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
Luego elimine el comentario de 'project_data_dir' y deje el valor predeterminado.
project_data_dir=/var/lib/awx/projects
Guarde y cierre la configuración.
A continuación se muestra la edición del archivo 'inventario'.
grep -v '^#' inventory
archivo de configuración de 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:instale Ansible AWX
Instale awx usando el siguiente comando ansible-playbook.
ansible-playbook -i inventory install.yml
El libro de jugadas realizará algunas tareas, incluida la descarga de imágenes acoplables y la creación de nuevos contenedores postgresql, memcached, rabbitmq, la aplicación web awx y la tarea awx.
Y debajo está el resultado.
A continuación, vaya al directorio '/var/lib/awx' y obtendrá la configuración 'docker-compose.yml'. Luego verifique todos los contenedores docker disponibles usando el comando docker-compose.
cd /var/lib/awx
docker-compose ps
Y se le mostrarán contenedores awx como se muestra a continuación.
Además, puede verificar los registros del servicio 'tarea' usando el siguiente comando.
docker-compose logs task
Paso 5:instalar y configurar Nginx como proxy inverso
Después de instalar awx, instalaremos y configuraremos Nginx como un proxy inverso para awx que ejecuta el puerto '8080'.
Instale Nginx usando el siguiente comando apt.
sudo apt install nginx -y
Una vez completada la instalación, vaya al directorio '/etc/nginx/sites-available/' y cree una nueva configuración de host virtual llamada 'awx' usando el editor vim.
cd /etc/nginx/sites-available/
vim awx
Ahora pegue la configuración a continuación.
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/;
}
}
Cambie el nombre de dominio y la dirección IP de proxy_pass por los suyos, luego guarde y salga.
Ahora active el host virtual 'awx' y pruebe la configuración de nginx.
ln -s /etc/nginx/sites-available/awx /etc/nginx/sites-enabled/
nginx -t
Asegúrese de que no haya ningún error con la configuración de nginx, luego reinicie el servicio de 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
Agregue los servicios SSH, HTTP y HTTPS a la configuración del firewall UFW.
ufw allow ssh
ufw allow http
ufw allow https
Ahora inicie y habilite el servicio de firewall ufw.
ufw enable
Escriba 'y' a sí y el cortafuegos ufw se ha configurado.
Paso 7 - Prueba
Abra su navegador web y escriba su URL awx en la barra de direcciones.
https://awx.hakase-labs.io
Y se le mostrará la página de inicio de sesión de awx como se muestra a continuación.
Ahora escriba el usuario 'hakase' y la contraseña 'hakasepass', luego haga clic en el botón 'iniciar sesión'.
Ahora obtiene 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 completó con éxito.