Zum Inhalt springen
Diese Seite wurde automatisch übersetzt. Englisches Original ansehen.

Fehlerbehebung

Diese Seite sammelt seltene, hostspezifische Probleme, die die meisten Sailwright-Setups nicht betreffen.

Windows: Cygwin-Ansible wird von einer Host-Installation überdeckt

Abschnitt betitelt „Windows: Cygwin-Ansible wird von einer Host-Installation überdeckt“

Unter Windows mit Cygwin kann die Ansible-Installation innerhalb von Cygwin von einer anderen Python- oder Ansible-Installation des Windows-Hosts überdeckt werden.

In diesem Fall gehen Sie wie folgt vor:

  • Installieren Sie Ansible nicht direkt auf dem Windows-Host.
  • Entfernen Sie konkurrierende Ansible-Installationen auf Host-Ebene.
  • Installieren und starten Sie Ansible stattdessen über die Cygwin-Python-Umgebung.

Beim Ausführen von Ansible unter macOS kann ein Fork-Safety-Absturz auftreten, der etwa so aussieht:

Terminal window
TASK [Gathering Facts] ***************************************************************************************************************************************
objc[9473]: +[NSNumber initialize] may have been in progress in another thread when fork() was called.
objc[9473]: +[NSNumber initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
ERROR! A worker was found in a dead state

Als Workaround setzen Sie vor dem Start von Ansible diese Umgebungsvariable:

Terminal window
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Das Linux-libvirt-Provisioning wartet darauf, dass virsh domifaddr eine IPv4-Adresse des Gasts meldet. Sailwright prüft zuerst den Gast-Agent und danach die DHCP-Leases von libvirt. Liefern beide Quellen keine Adresse, kann das Provisioning das temporäre Ansible-Inventory nicht aufbauen.

Vergewissern Sie sich zunächst, dass die VM läuft, und fragen Sie dieselbe libvirt-Verbindung ab, die Sailwright verwendet:

Terminal window
virsh --connect qemu:///system domifaddr <domain> --source agent
virsh --connect qemu:///system domifaddr <domain> --source lease

Ist die Abfrage über den Agent leer, warten Sie, bis der Gast vollständig gestartet ist, und stellen Sie sicher, dass im Image qemu-guest-agent installiert ist und läuft. Ist die Abfrage der Leases leer, stellen Sie sicher, dass die VM an ein von libvirt verwaltetes Netzwerk mit sichtbaren DHCP-Leases angebunden ist:

Terminal window
virsh --connect qemu:///system net-info default
virsh --connect qemu:///system net-dhcp-leases default

Existiert das Netzwerk default, ist aber inaktiv, aktivieren Sie es:

Terminal window
sudo virsh --connect qemu:///system net-start default
sudo virsh --connect qemu:///system net-autostart default

Führen Sie bei DEV_ALCHEMY_LIBVIRT_URI=qemu:///session dieselben Prüfungen gegen qemu:///session aus. VMs in einer Session nutzen standardmäßig das User-Mode-Networking von libvirt. Daher ist die Sichtbarkeit über den Gast-Agent meist die zuverlässigste Quelle für die IP-Adresse.