Troubleshooting

Beheben des Fehlers "Destination sas-java does not exist" während eines Updates

Simon 30/04/2021 2 Aufrufe

Beim Upgrade von SAS© Viya (z. B. von Version 3.2 auf 3.3) oder bei einer erneuten Bereitstellung nach einem fehlgeschlagenen Versuch kann es vorkommen, dass das Ansible-Playbook unerwartet abbricht.

Ein häufiger Fehler betrifft die Komponente sas©-javaesntl und äußert sich in einer Meldung, dass ein Zielpfad nicht gefunden werden kann, was den gesamten Installationsprozess blockiert.

Das Symptom

Inhaltsverzeichnis

Bei der Ausführung der Bereitstellung über Ansible schlägt die Aufgabe mit der folgenden JSON-Meldung fehl:

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

Auch wenn die Variable sas©_install_java in Ihrer vars.yml-Datei korrekt auf true gesetzt ist, besteht der Fehler weiterhin.

Die Ursache des Problems: Ein inkonsistenter Zustand

Dieser Fehler tritt normalerweise auf, wenn sich das System in einem inkonsistenten Zustand zwischen der RPM-Datenbank und dem tatsächlichen Dateisystem befindet.

Dies geschieht häufig nach mehreren fehlgeschlagenen Bereitstellungsversuchen oder einer unvollständigen Bereinigung. Ansible erkennt (über die RPM-Datenbank), dass das Paket sas©-javaesntl bereits installiert ist, und versucht daher nicht, es neu zu installieren. Die physischen Dateien (in /opt/sas©/viya/...) wurden jedoch manuell gelöscht oder verschoben, oder das Mount hat sich geändert.

Infolgedessen versucht Ansible, eine Datei zu konfigurieren, die physisch nicht mehr existiert, obwohl das System sie als installiert ansieht.

Diagnose

Um zu bestätigen, dass Sie es mit diesem Problem eines "Phantom-Pakets" zu tun haben, können Sie die Integrität des Pakets auf Ihren Zielen mit einem Ad-hoc-Befehl von Ansible überprüfen:

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

Wenn die Ausgabe zahlreiche Zeilen anzeigt, die mit missing (fehlend) beginnen, wie unten gezeigt, ist die Ursache bestätigt:

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

Die Lösung

Um diese Situation zu beheben, müssen Sie die Deinstallation des beschädigten Pakets erzwingen, bevor Sie den Bereinigungs- und Installationsprozess erneut starten.

Schritt 1: Das Paket manuell entfernen

Verwenden Sie Ansible, um das problematische RPM-Paket auf allen betroffenen Knoten sauber zu entfernen:

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

Schritt 2: Die Umgebung bereinigen

Sobald das Paket entfernt ist, führen Sie das von SAS© bereitgestellte Standard-Bereinigungs-Playbook aus, um sicherzustellen, dass die Umgebung sauber ist:

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

Schritt 3: Die Bereitstellung erneut starten

Sie können nun Ihren Bereitstellungs- oder Aktualisierungsbefehl (z. B. site.yml) erneut ausführen. Das System wird das Paket sas©-javaesntl korrekt neu installieren und die Konfigurationsdateien werden wie erwartet erstellt.