Troubleshooting

Resolver el error "Destination sas-java does not exist" durante una actualización

Simon 30/04/2021 3 views

Al actualizar SAS© Viya (por ejemplo, al pasar de la versión 3.2 a 3.3) o al redesplegar después de un intento fallido, es posible que el playbook de Ansible se detenga abruptamente.

Un error frecuente se refiere al componente sas©-javaesntl y se manifiesta con un mensaje que indica que no se encuentra una ruta de destino, bloqueando así todo el proceso de instalación.

El Síntoma

Table of Contents

Al ejecutar el despliegue a través de Ansible, la tarea falla con el siguiente mensaje JSON:

fatal: [deployTarget]: FAILED! => { "changed": false, "failed": true, "msg": "Destination /opt/sas/viya/config/etc/sysconfig/sas-javaesntl/sas-java does not exist !", "rc": 257 }

Aunque la variable sas©_install_java esté correctamente definida como true en su archivo vars.yml, el error persiste.

El Origen del problema: Un estado inconsistente

Este error generalmente ocurre cuando el sistema se encuentra en un estado inconsistente entre la base de datos RPM y el sistema de archivos real.

Esto sucede a menudo después de varios intentos de despliegue fallidos o una limpieza incompleta. Ansible detecta (a través de la base de datos RPM) que el paquete sas©-javaesntl ya está instalado, por lo que no intenta reinstalarlo. Sin embargo, los archivos físicos (en /opt/sas©/viya/...) han sido eliminados o movidos manualmente, o el punto de montaje ha cambiado.

Como resultado, Ansible intenta configurar un archivo que ya no existe físicamente, aunque el sistema crea que está instalado.

Diagnóstico

Para confirmar que se enfrenta a este problema de "paquete fantasma", puede verificar la integridad del paquete en sus destinos mediante un comando ad-hoc de Ansible:

Terminal (Bash)
user@sas:~$ ansible -i inventory.ini all -m shell -a 'rpm -vV sas-javaesntl'

Si la salida indica numerosas líneas que comienzan con missing (faltante), como se muestra a continuación, la causa está confirmada:

missing /opt/sas©/viya/config/etc/sysconfig/sas©-javaesntl missing c /opt/sas©/viya/config/etc/sysconfig/sas©-javaesntl/sas©-java

La Solución

Para corregir esta situación, debe forzar la desinstalación del paquete corrupto antes de volver a ejecutar el proceso de limpieza e instalación.

Paso 1: Eliminar el paquete manualmente

Use Ansible para eliminar limpiamente el paquete RPM problemático en todos los nodos afectados:

Terminal (Bash)
user@sas:~$ ansible -i inventory.ini all -m shell -a 'sudo rpm -e sas-javaesntl'

Paso 2: Limpiar el entorno

Una vez que se haya eliminado el paquete, ejecute el playbook de limpieza estándar proporcionado por SAS© para asegurarse de que el entorno esté limpio:

Terminal (Bash)
user@sas:~$ ansible-playbook deploy-cleanup.yml

Paso 3: Reiniciar el despliegue

Ahora puede volver a ejecutar su comando de despliegue o actualización (ej: site.yml). El sistema reinstalará correctamente el paquete sas©-javaesntl y los archivos de configuración se crearán como se esperaba.