Instrucciones de instalación en las instalaciones
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 | Sí | Tráfico HTTP entrante |
443 | Sí | 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.