Troubleshooting

Résoudre l'erreur "Destination sas-java does not exist" lors d'une mise à jour

Simon 30/04/2021 4 views

Lors de la mise à niveau de SAS© Viya (par exemple, lors d'un passage de la version 3.2 à 3.3) ou lors d'un redéploiement après une tentative échouée, il est possible que le playbook Ansible s'interrompe brutalement.

Une erreur fréquente concerne le composant sas©-javaesntl et se manifeste par un message indiquant qu'un chemin de destination est introuvable, bloquant ainsi tout le processus d'installation.

Le Symptôme

Table of Contents

Lors de l'exécution du déploiement via Ansible, la tâche échoue avec le message JSON suivant :

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

Même si la variable sas©_install_java est correctement définie sur true dans votre fichier vars.yml, l'erreur persiste.

L'Origine du problème : Un état incohérent

Cette erreur survient généralement lorsque le système se trouve dans un état incohérent entre la base de données RPM et le système de fichiers réel.

Cela se produit souvent après plusieurs tentatives de déploiement infructueuses ou un nettoyage incomplet. Ansible détecte (via la base RPM) que le paquet sas©-javaesntl est déjà installé, il ne tente donc pas de le réinstaller. Cependant, les fichiers physiques (dans /opt/sas©/viya/...) ont été supprimés ou déplacés manuellement, ou le montage a changé.

En conséquence, Ansible essaie de configurer un fichier qui n'existe plus physiquement, bien que le système le croie installé.

Diagnostic

Pour confirmer que vous êtes bien face à ce problème de "paquet fantôme", vous pouvez vérifier l'intégrité du paquet sur vos cibles via une commande ad-hoc Ansible :

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

Si le retour indique de nombreuses lignes commençant par missing (manquant), comme ci-dessous, la cause est confirmée :

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

La Solution

Pour corriger cette situation, vous devez forcer la désinstallation du paquet corrompu avant de relancer le processus de nettoyage et d'installation.

Étape 1 : Supprimer le paquet manuellement

Utilisez Ansible pour supprimer proprement le paquet RPM problématique sur tous les nœuds concernés :

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

Étape 2 : Nettoyer l'environnement

Une fois le paquet supprimé, exécutez le playbook de nettoyage standard fourni par SAS© pour vous assurer que l'environnement est propre :

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

Étape 3 : Relancer le déploiement

Vous pouvez maintenant relancer votre commande de déploiement ou de mise à jour (ex: site.yml). Le système réinstallera correctement le paquet sas©-javaesntl et les fichiers de configuration seront créés comme prévu.