2017-03-17 8 views
1

Ich verwende derzeit kitchen-docker Treiber für meine test kitchen läuft, um unsere automatisierten Kochbuch Tests zu beschleunigen.Kitchen-Docker und Systemd

Jedoch nach dem Spielen für eine Weile mit diesem fand ich, dass jeder Küchenlauf scheitert, wenn es in einem Rezept eine service Ressource beteiligt ist, wenn ich versuche, einen Service zu stoppen/starten/neu zu starten, ist dies nicht innerhalb des Behälters und Der Lauf schlägt fehl.

Wenn ich im Inneren des Behälters erhalten mit kitchen login, jedes Mal wenn ich versuche systemctl zu verwenden ... Ich bekomme diese Fehlermeldung:

[[email protected] ~]$ sudo systemctl restart foo 
Failed to get D-Bus connection: Operation not permitted 

Gibt es eine Möglichkeit, dies zu beheben? Ich führe gerade dieses Bild mit der Option privileged: true in .kitchen.yml.

+0

Dies ist einer von vielen Gründen, dass ich sogar als Betreuer von kitchen-docker, empfehle, dass die meisten Leute stattdessen dokken verwenden. – coderanger

+0

Gibt es irgendeinen Plan, dies zu jeder Zeit zu beheben? Oder sollte ich zu Kitchen-Dokken springen und niemals zurückschauen? – Navarro

+0

Ich meine, es ist nichts, was man per se reparieren kann, nur dass dokken besser für dieses Modell funktioniert. – coderanger

Antwort

3

Da ich nicht den Umzug in Küchen dokken noch so gut gemacht hat, hier ist die Config, die ich innen Küche-Docker systemd zu ermöglichen, verwenden:

driver: 
    name: docker 
    run_command: /bin/systemd 
    cap_add: 
    - SYS_ADMIN 
    volume: 
    - /sys/fs/cgroup 

ACHTUNG: Ich nehme an, dass Sie mit den Auswirkungen der Bereitstellung eines Containers SYS_ADMIN Fähigkeiten vertraut sind (Root-Äquivalent auf dem Host-System, lesen Sie more).

+0

Gute Idee, aber ich glaube nicht, dass ich diesen Ansatz in einer Umgebung verwenden sollte, wo viele Leute den Agenten verwenden, wo Kochbücher sein werden getestet ... aber immer noch großartig für den persönlichen Gebrauch. – Navarro