Wie aktiviere ich den systemd-instanziierten Dienst mit Puppet?

9

Ich habe folgenden Puppenservice:

service { "[email protected]": 
    provider => systemd,
    ensure => running,
    enable => true,
}

Wenn ich versuche, diese Konfiguration auf meinen Client anzuwenden, wird der folgende Fehler ausgegeben:

err: /Stage[main weibl.

Der Dienst läuft einwandfrei und ich kann sicherstellen, dass er beim Systemstart gestartet wird, indem ich getty.target.wants einen Symlink hinzufüge:

ln -s /lib/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

Natürlich könnte ich "enable => true" aus der Dienstdefinition entfernen und den Symlink manuell in die Puppenkonfiguration aufnehmen, aber sollte Puppe sich nicht darum kümmern? Mache ich etwas schrecklich falsch?

Clayton Louden
quelle

Antworten:

6

Der systemd-Anbieter in Puppet verwendet heute nur zwei Befehle für den Dienststatus enable:

  • systemctl is-enabled <unit>Überprüfen des Rückkehrcodes auf den aktuellen Aktivierungsstatus
  • systemctl enable/disable <unit> um es zu ändern

Der Befehl enable löst einen Fehler aus, wenn Sie eine Instanz des getty @ -Dienstes aktivieren, die noch nicht vorhanden ist:

$ sudo systemctl enable [email protected]
Failed to issue method call: No such file or directory

Dies verursacht dann den in Puppet angezeigten Fehler (obwohl stderr nicht angezeigt zu werden scheint).

Für mich sieht es nach einer Lücke in systemd aus, dass Sie keine neuen Instanzen einer Vorlage aktivieren können. Es gibt bereits BZ # 752774 in Fedora , aber die Kommentare deuten darauf hin, dass es möglicherweise nicht in Kürze hinzugefügt wird.

Möglicherweise ist es besser, eine Funktionsanforderung gegen Puppet einzureichen, um Unterstützung speziell für die Aktivierung neuer Instanzen hinzuzufügen. In Ihrer Feature-Anfrage würde ich vorschlagen, auf Lennarts Erklärung der Einheiteninstanzen als Hintergrund zu verweisen.

Dominic Cleal
quelle