Kurztipp: WSL + Ansible = 'Failed to create temporary directory'

Beim Benutzen von Ansible unter WSL (Windows Subsystem for Linux) bin ich neulich auf den folgenden Fehler gestoßen:

1Failed to create temporary directory.
2In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rootet in "/tmp", for more error information use -vvv.

In diesem Fall wurde Ubuntu 20.04 benutzt, der Fehler kann aber auch bei anderen Distributionen bzw. Versionen auftreten.

Der Hintergrund des Fehlers ist, dass Ubuntu eine nicht mit WSL kompatible Version der GNU C-Bibliothek (glibc) ausliefert. Das kann man wie folgt überprüfen:

1$ sleep 1337
2sleep: cannot read realtime clock: Invalid argument

Ansible nutzt für einige Ressourcen den sleep-Aufruf - auch, wenn man keine Pausen einbaut.

Als Workaround kann man das des sleep-Kommando auf beispielsweise /bin/true* verlinken. In diesem Fall funktionieren allerdings keine Pausen mehr:

1# mv /usr/bin/sleep /usr/bin/sleep.orig
2# ln -s /bin/true /usr/bin/sleep

Hoffentlich gibt es bald einen dauerhaften Fix für das Problem. Eine aktive Diskussion zum Thema gibt es hier.

Hier ist auch vermerkt, dass Ubuntu 18.04 nicht von dem Problem betroffen ist. Auch gibt es schon einen Patch in der Entwicklerversion von WSL.

Übersetzungen: