Der folgende Fehler war in den letzten Monaten der Fluch meiner Existenz:

TASK [geerlingguy.containerd: Stellen Sie sicher, dass containerd beim Booten gestartet und aktiviert ist.] *** fatal: [Instanz]: FAILED!=> {“geändert”: falsch,”cmd”:”/bin/systemctl”,”msg”:”Verbindung zum Bus fehlgeschlagen: Keine solche Datei oder Verzeichnis”,”rc”: 1,”stderr”:”Fehlgeschlagen zum Verbinden mit Bus: Keine solche Datei oder Verzeichnis”,”stderr_lines”: [“Verbindung zum Bus fehlgeschlagen: Keine solche Datei oder Verzeichnis”],”stdout”:””,”stdout_lines”: [] }

Seit Ich verwende Molecule mit meinen Ansible-Rollen und-Playbooks, um sie in identischen CI-Umgebungen sowohl lokal als auch in GitHub-Aktionen zu testen, wenn ich kann Aufrechterhaltung einer identischen Umgebung, in der Tests ausgeführt werden. Und viele meiner Rollen und Playbooks müssen testen, ob systemd-Dienste konfiguriert sind und korrekt ausgeführt werden.

Aber Docker hat kürzlich von cgroups v1 auf cgroups v2 umgestellt, und das hat dieses „Verbindung zum Bus fehlgeschlagen“-Geschäft in Gang gesetzt— systemd stützte sich auf eine Konfiguration, die in der Vergangenheit einfach hinzugefügt werden konnte: Führen Sie Ihre Container einfach mit diesen Optionen aus:

–privileged-v/sys/fs/cgroup:/sys/fs/cgroup:rw

Aber nach dem cgroups v2-Upgrade mussten Sie entweder die Option”deprecatedCgroupv1″: true zur Datei settings.json von Docker hinzufügen oder die Befehlszeilenoption–cgroupns=host hinzufügen.

Das Problem ist, Molecule hatte keine Möglichkeit, die cgroupns-Option zu übergeben. Wenn ich also Dinge lokal ausführen wollte, musste ich die „veraltete“ cgroup v1-Option verwenden. Bis gestern!

Alles, was ich tun musste, um sicherzustellen, dass systemd in meinen Containern funktioniert, war, die Option cgroupns_mode: host in meiner molecule.yml-Datei hinzuzufügen, zum Beispiel:

platforms:-name: instance Bild:”geerlingguy/docker-debian11-ansible:latest”Befehl:””Volumes:-/sys/fs/cgroup:/sys/fs/cgroup:rw-/var/lib/containerd cgroupns_mode: host ## <--Dies ist die Zeile, die ich privilegiert hinzugefügt habe: true pre_build_image: true

Weitere Informationen finden Sie in diesen Themen:

By Henry Taylor

Ich arbeite als Backend-Entwickler. Einige von Ihnen haben mich vielleicht auf der Entwicklerkonferenz gesehen. In letzter Zeit arbeite ich an einem Open-Source-Projekt.