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.
Bei der Ausführung der Bereitstellung über Ansible schlägt die Aufgabe mit der folgenden JSON-Meldung fehl:
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:
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:
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:
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.