Instrucciones de instalación en las instalaciones

Link to Instrucciones de instalación en las instalaciones copied to clipboard
Not for use with personal data

Este documento describe el proceso de instalación de axe DevTools en una ubicación local.

Requisitos

Antes de intentar instalar axe DevTools, asegúrese de que se cumplan los siguientes requisitos.

Sistema operativo

Axe está diseñado para ejecutarse en RHEL7 o RHEL8. Actualmente no se admiten otros sistemas operativos.

Antes de instalar axe, se espera que su sistema se haya actualizado a través de:

yum update -y

Requisitos de hardware

Nuestras pruebas de carga han demostrado que un AWS t2.micro es capaz de soportar una base de usuarios pequeña (alrededor de 25 usuarios) sin poner una carga significativa en la aplicación. No recomendamos implementar axe en un servidor que no tenga especificaciones equivalentes a las de a t2.micro.

Especificación Requisito
Núcleos de CPU 1
Velocidad de la CPU 3,3 GHz
RAM 1 GB
Almacenamiento 15 GB

Si tiene una base de usuarios grande, consulte la siguiente tabla para obtener recomendaciones.

Usuarios CPUs Memoria RAM (GB) Tamaño de AWS T2
100 1 2 pequeño
300 2 4 medio
500 4 8 grande
700 8 16 Extra grande
1000 8 32 2 veces grande

En cualquier tamaño de máquina, se requiere un mínimo de 15 GB de almacenamiento físico (espacio en disco). Sin embargo, recomendamos 30 GB o más.

Requisitos de red

Actualmente, Axe no necesita acceso a la red saliente, salvo para responder a las solicitudes que se le hacen.

Axe abrirá los siguientes puertos en el sistema en el que se implementa:

Número de puerto Accesible desde Internet Propósito
80 Tráfico HTTP entrante
443 Tráfico HTTPS entrante (solo cuando se ejecuta en modo SSL)
3000 no Servidor Axe

Si planea ejecutar PostgreSQL en la misma máquina que axe, se abrirá su puerto estándar (5432), pero no será accesible desde el exterior de Internet.

Requisitos de DNS

Debe crearse un DNS para axe. Este DNS puede estar detrás del firewall de su empresa, en su propia red privada o ser accesible al Internet público. Para nuestro servidor AX privado, tenemos A un registro apuntado a una instancia EC2 en nuestra cuenta de AWS.

El ejemplo de DNS utilizado en este documento es axe.mycompany.com.

Configuración de SELinux

Axe requiere que se deshabilite una sola bandera SELinux:

setsebool -P httpd_can_network_connect 1

Esto permite que NGINX actúe como un proxy inverso y responda a las solicitudes de red salientes.

Usuarios

Se espera que el instalador se ejecute como el root usuario. Si no sudo su puede cambiar al root usuario, el instalador fallará.

El instalador creará los siguientes usuarios:

Usuario Propósito
nginx Ejecuta el servicio nginx
axe Ejecuta el servicio axe
Postgres Ejecuta el servicio postgres

Ninguno de estos usuarios necesita permisos elevados.

Dependencias

El instalador de Axe agrupa todas sus dependencias. El servidor AXE está instalado de manera que ** no necesita acceso a Internet externo ** para poder funcionar.

Una implementación de axe tiene dependencias estrictas del siguiente software:

  • NGINX - Expone los servidores axe a su red
  • PostgreSQL - Almacenamiento de datos

El servidor axe se ejecuta a través de Node.js, pero no es necesario instalar Node en el sistema.

NGINX

Es necesario instalar/configurar NGINX para reenviar tráfico al servidor axe. Se ha proporcionado un ejemplo de configuración de NGINX (consulte axe-nginx-example.conf).

Los RPM necesarios para instalar NGINX están incluidos en el instalador de axe. Para instalar NGINX, haga lo siguiente:

# Install the RPM.
yum install -y ./rpms/nginx/*.rpm
# Overwrite default configuration.
cp axe-nginx-example.conf /etc/nginx/nginx.conf
# Start NGINX and ensure it runs at system startup.
systemctl start nginx
systemctl enable nginx

PostgreSQL

El servidor axe utiliza PostgreSQL para el almacenamiento de datos. Se debe proporcionar al instalador una conexión válida a PostgreSQL.

Axe admite tanto un PostgreSQL externo (por ejemplo, un RDS alojado por AWS) como un servidor PostgreSQL que se ejecuta en la misma máquina.

Los RPM necesarios para instalar PostgreSQL están incluidos en el instalador de Axe. Para instalar PostgreSQL, haga lo siguiente:

# Install the RPM.
yum install -y ./rpms/postgres/*.rpm
# Initialize PostgreSQL DB.
postgresql-14-setup initdb

# https://www.cyberciti.biz/faq/psql-fatal-ident-authentication-failed-for-user/
sed -i 's/ident/trust/g' /var/lib/pgsql/14/data/pg_hba.conf
sed -i 's/peer/trust/g' /var/lib/pgsql/14/data/pg_hba.conf

# Start PostgreSQL and ensure it runs at system startup.
systemctl start postgresql-14
systemctl enable postgresql-14

Ejecución del instalador

El instalador debe ejecutarse como root usuario. Verifique que usted es el root usuario ejecutando:

whoami

Si ya ha extraído el instalador, asegúrese de borrar el migrations directorio:

rm -f installer/migrations/*.sql

El instalador se entregará como un único archivo (archivo comprimido): installer.tar.gz. Para extraer el archivo, ejecute lo siguiente:

mkdir installer
tar -xvzf ./installer.tar.gz -C ./installer

Esto dará como resultado una estructura similar a la siguiente:

.
└── installer
    ├── axe-nginx-example.conf
    ├── axe-service
    ├── installer
    ├── migrations
    │   ├── 0000-00-00-baseline.sql
    │   └── [...]
    └── rpms
        ├── nginx
        └── postgres

Una vez extraído, el siguiente paso es ejecutar el installer/installer programa.

Configuración del instalador

Se necesitan muchas banderas de configuración para configurar el instalador. La siguiente tabla explica cada indicador CLI que se pasa al installer programa.

Opción Descripción
axe-database-name Nombre de la base de datos de Axe
axe-database-password Contraseña para la base de datos de Axe
master-database-name Nombre de la base de datos maestra
master-database-user Usuario para la base de datos maestra
master-database-password Contraseña para el usuario de la base de datos maestra
master-database-host Host para la base de datos maestra
master-database-port Puerto para la base de datos maestra (por defecto es 5432)
Clave de cifrado de base de datos Clave de 32 caracteres para el cifrado de bases de datos
iv de cifrado de base de datos Vector de Inicialización de 16 caracteres para cifrado de base de datos
Directorio de migración Directorio que contiene las migraciones de bases de datos de Axe
Usuario del hacha Nombre del usuario del sistema que ejecutará el servicio axe
Id de extensión ID de extensión de Google Chrome para la extensión Axe
Dirección Dirección (URL) que asumirá el servicio Axe
Secretos de las cookies Secretos para firmar cookies de Axe (lista separada por comas)
Dominios de correo electrónico permitidos Lista blanca de dominios de correo electrónico (lista separada por comas)
URL del servicio de autenticación Establezca la dirección en una implementación de servicio de autenticación existente
Dominio del servicio de autenticación Nombre del reino que Axe usará
Nombre de usuario del administrador del servicio de autenticación Nombre de usuario para un administrador de reino "maestro" existente
Contraseña de administrador del servicio de autenticación Contraseña para un administrador de reino "maestro" existente
Nombre de usuario del administrador axe del servicio de autenticación Nombre de usuario para el usuario administrador de Axe
auth-service-axe-admin-password Contraseña para el usuario administrador de Axe
auth-service-public-client-id ID de cliente público para esta implementación de Axe
ID de cliente confidencial del servicio de autenticación ID de cliente confidencial para esta implementación de Axe
ID de cliente de administrador del servicio de autenticación ID de cliente para un cliente administrador existente (normalmente "admin-cli")
Clave de api de servicio de aprendizaje automático Clave API para el servicio de aprendizaje automático Deque
URL del servicio ml URL del servicio de aprendizaje automático Deque
Tiempo de espera del servicio ml Tiempo de espera de solicitud (en ms) para el servicio de aprendizaje automático Deque
Compartido con Anula las pruebas y la compartición de incidencias. O bien "usuarios" o "cualquiera".
URL del servicio de facturación URL para el servicio de facturación (opcional)
Migrar a facturación Migrar usuarios existentes al servicio de facturación
billing-service-admins Asegúrese de que los usuarios sean administradores durante la migración al servicio de facturación (opcional; requiere --billing-service-url y --migrate-to-billing)
accept-self-signed-ssl Aceptar certificados TLS/SSL autofirmados (opcional)
Concurrencia máxima de migración Número máximo de solicitudes realizadas al migrar usuarios al servicio de facturación (opcional; el valor predeterminado es 20)
Habilitar registro de auditoría Habilitar o deshabilitar la función de registro de auditoría
Host smtp Host SMTP para enviar correos electrónicos
puerto-smtp Puerto SMTP para enviar correos electrónicos
nombre de usuario-smtp Nombre de usuario SMTP para enviar correos electrónicos
Contraseña smtp Contraseña smtp para enviar correos electrónicos

Notas sobre la bandera de configuración

  • --migration-directory debe apuntar al directorio donde se extrajo el archivo tar del instalador más /migrations. Probablemente esto pueda ser $PWD/migrations.
  • --address es el DNS preconfigurado para la instalación de axe.
  • --allowed-email-domains puede configurarse si su instalación de axe solo debe permitir el uso desde dominios de correo electrónico específicos (por ejemplo, *@mycompany.com).
  • --extension-id el valor predeterminado es todos los ID de extensión de axe conocidos (incluidos Chrome y Edge).
  • --database-encryption-key ** debe ** tener 32 caracteres de longitud.
  • --database-encryption-iv debe tener 16 caracteres de longitud.

Variables de entorno

Cada uno de estos indicadores de configuración puede establecerse mediante variables de entorno con el formato:

AXE_DEVTOOLS_INSTALLER_{flag name}

Donde {flag name} es la variante en formato snake case en mayúsculas del indicador de configuración. Por ejemplo, --auth-service-admin-client-id puede proporcionarse utilizando la AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID variable de entorno.

Además, se cargará un .env archivo en el mismo directorio de trabajo desde el que se ejecuta el instalador, lo que permitirá lo siguiente:

echo 'AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID=my-admin-client' > .env
./installer

Ejemplo de configuración

Configuraciones de muestra para instalar axe DevTools.

Banderas de la línea de comandos

./installer \
  --axe-database-name="axe" \
  --axe-database-password="secret" \
  --master-database-name="postgres" \
  --master-database-user="postgres" \
  --master-database-password="postgres" \
  --master-database-host="localhost" \
  --master-database-port="5432" \
  --database-encryption-key="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
  --database-encryption-iv="bbbbbbbbbbbbbbbb" \
  --extension-id="lhdoppojpmngadmnindnejefpokejbdd" \
  --address="https://axe.mycompany.com" \
  --cookie-secrets="foo,bar" \
  --auth-service-url="https://auth.mycompany.com" \
  --auth-service-admin-username="admin" \
  --auth-service-admin-password="SECRET" \
  --auth-service-admin-client-id="admin-cli" \
  --auth-service-axe-admin-password="SECRET" \
  --auth-service-axe-admin-username="axe-admin" \
  --auth-service-realm="axe" \
  --auth-service-public-client-id="onprem_public" \
  --auth-service-confidential-client-id="onprem_confidential" \
  --migration-directory="./migrations" \
  --ml-service-api-key="AAAAAAAAAAAAAA" \
  --ml-service-url="http://axe.mlservice.com" \
  --ml-service-timeout=50000 \
  --shared-with="users" \
  --billing-service-url="http://axe.billing.service.url" \
  --migrate-to-billing="true" \
  --billing-service-admins="admin1@deque.com" \
  --accept-self-signed-ssl="true" \
  --max-migration-concurrency=20 \
  --enable-audit-log="false" \
  --smtp-host="http://smtp.host" \
  --smtp-port="8125" \
  --smtp-username="user" \
  --smtp-password="password"

Variables de entorno (.env)

AXE_DEVTOOLS_INSTALLER_AXE_DATABASE_NAME="axe"
AXE_DEVTOOLS_INSTALLER_AXE_DATABASE_PASSWORD="secret"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_NAME="postgres"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_USER="postgres"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_PASSWORD="postgres"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_HOST="localhost"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_PORT="5432"
AXE_DEVTOOLS_INSTALLER_DATABASE_ENCRYPTION_KEY="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
AXE_DEVTOOLS_INSTALLER_DATABASE_ENCRYPTION_IV="bbbbbbbbbbbbbbbb"
AXE_DEVTOOLS_INSTALLER_MIGRATION_DIRECTORY="./migrations"
AXE_DEVTOOLS_INSTALLER_AXE_USER="axe"
AXE_DEVTOOLS_INSTALLER_EXTENSION_ID="lhdoppojpmngadmnindnejefpokejbdd"
AXE_DEVTOOLS_INSTALLER_ADDRESS="https://axe.mycompany.com"
AXE_DEVTOOLS_INSTALLER_COOKIE_SECRETS="foo,bar"
AXE_DEVTOOLS_INSTALLER_ALLOWED_EMAIL_DOMAINS=""
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_URL="https://auth.mycompany.com"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_REALM="axe"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_PASSWORD="secret"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_USERNAME="admin"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_AXE_ADMIN_USERNAME="axe-admin"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_AXE_ADMIN_PASSWORD="secret"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_PUBLIC_CLIENT_ID="onprem_public"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_CONFIDENTIAL_CLIENT_ID="onprem_confidential"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID="admin-cli"
AXE_DEVTOOLS_INSTALLER_ML_SERVICE_API_KEY="your-api-key"
AXE_DEVTOOLS_INSTALLER_ML_SERVICE_URL="https://axe-ml.deque.com"
AXE_DEVTOOLS_INSTALLER_ML_SERVICE_TIMEOUT="30000"
AXE_DEVTOOLS_INSTALLER_SHARED_WITH="users"
AXE_DEVTOOLS_INSTALLER_BILLING_SERVICE_URL="http://axe-billing.service.com"
AXE_DEVTOOLS_INSTALLER_MIGRATE_TO_BILLING="true"
AXE_DEVTOOLS_INSTALLER_BILLING_SERVICE_ADMINS="admin1@deque.com"
AXE_DEVTOOLS_INSTALLER_ACCEPT_SELF_SIGNED_TLS="false"
AXE_DEVTOOLS_INSTALLER_SMTP_HOST="http://smtp.host"
AXE_DEVTOOLS_INSTALLER_SMTP_PORT="8125"
AXE_DEVTOOLS_INSTALLER_SMTP_USERNAME="user"
AXE_DEVTOOLS_INSTALLER_SMTP_PASSWORD="password"
AXE_DEVTOOLS_INSTALLER_ENABLE_AUDIT_LOG="false"

Notas

Registro

Actualmente, los registros se envían a stdio. Los registros se rotan según la configuración de su sistema (no según lo dicta axe en sí).

Se pueden recuperar con journalctl. Por ejemplo:

journalctl -u axe
-- Logs begin at Tue 2020-05-05 13:51:35 UTC, end at Tue 2020-05-05 14:14:34 UTC. --
May 05 13:54:45 c8df7dc28ee3 systemd[1]: Started Axe Enterprise Service.
May 05 13:54:45 c8df7dc28ee3 axe-service[766]: {"config":{"extensionURL":"https://chrome.google.com/webstore/detail/axe/lhdoppojpmngadmnindnejefpokejbdd","port":"3000","assetC
DN":"","connection":{"host":"localhost","database":"walnut","user":"walnut","password":"<redacted>"},"defaultOrganization":{"name":"Axe Organization","realm":"axe"},"keycloak"
:{"url":"https://localhost","publicClientId":"axe-public","realm":{"username":"admin","password":"<redacted>","client_id":"axe-confidential","client_secret":"<redacted>"}},"ro
leLockPrefix":"team-","trackingID":"UA-132342340-1","datadog":{"host":"localhost","port":8125,"prefix":"axepro.server."}},"level":"info","message":"Starting application"}
May 05 13:54:45 c8df7dc28ee3 axe-service[766]: {"connection":{"host":"localhost","database":"walnut","user":"walnut","password":"<redacted>"},"level":"info","message":"Connect
ing to database"}
May 05 13:54:46 c8df7dc28ee3 axe-service[766]: {"message":"Connected to database","level":"info"}
May 05 13:54:46 c8df7dc28ee3 axe-service[766]: {"port":"3000","level":"info","message":"listening"}

Estado del sistema

Para ver el estado completo del sistema, utilice systemctl:

systemctl status

Para ver el estado del servicio de Axe, haga lo siguiente:

systemctl status axe

Puesta en marcha/parada de servicios de Axe

Para iniciar o detener un servicio, utilice systemctl:

systemctl stop axe
systemctl start axe

Certificados TLS/SSL autofirmados

Si se utilizan certificados TLS/SSL autofirmados, se debe configurar AXE_DEVTOOLS_INSTALLER_ACCEPT_SELF_SIGNED_TLS=true o --accept-self-signed-tls=true.

Machine Learning (ML)

De forma predeterminada, las mejoras de ML de las extensiones de axe DevTools están habilitadas.

Para realizar la funcionalidad de ML, el servidor de axe DevTools (portal de cuentas de axe) se comunica con el ML service , que a su vez se comunica con el Sagemaker instance. Sagemaker realiza la inferencia de visión artificial que se utiliza para reducir la cantidad de trabajo manual en las IGT. El servicio ML maneja todos los datos de imágenes que se utilizan para inferencia y otros fines (como capturas de pantalla de problemas) y almacena los datos para su uso a largo plazo.

SageMaker no almacena ningún dato y, por lo tanto, se recomienda que todos los clientes permitan que sus instancias se comuniquen con el modelo alojado de forma central. Un cliente puede solicitar que se desactive esta función. Si se hace esto, perderán el acceso a las mejoras del modelo ML en el producto que pueden ayudar a optimizar sus pruebas y automatizar tareas que de otro modo serían manuales. Las capturas de pantalla de problemas compartidos y el análisis de contraste de color continuarían funcionando sin SageMaker.

Las instancias privadas y locales pueden admitir funciones de ML apuntando la instancia a una instancia de servicio de ML (esta puede ser compartida o no) a través de la variable de entorno ML_SERVICE (la URL del servicio de ML) y configurando la variable de entorno ML_SERVICE_API_KEY con una clave API válida.

Funciones de aprendizaje automático

  • Capturas de pantalla del problema (se pueden ver en la página para compartir el problema)
  • Herramienta de revisión automática del contraste de color
  • Detección automática de roles de elementos
  • Detección automática de etiquetas de entrada

Autenticación

Se requiere Deque SSO para que los usuarios inicien sesión en la aplicación. Este servicio SSO se puede compartir entre varios productos Deque y se puede configurar de varias maneras. Como se documentó anteriormente, hay una serie de variables de entorno AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_* que permiten que la extensión axe DevTools permita a los usuarios iniciar sesión en la aplicación.