Jak włączyć usystematyzowaną usługę instancji za pomocą marionetki?

9

Mam następujące usługi lalek:

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

Gdy próbuję zastosować tę konfigurację na moim kliencie, pojawia się następujący błąd:

err: /Stage[main]//Node[puppetclient]/Service[[email protected]]/enable: zmiana z false na true nie powiodła się: Nie można włączyć [email protected]:

Usługa działa poprawnie i mogę się upewnić, że została uruchomiona podczas uruchamiania systemu, dodając dowiązanie symboliczne do getty.target.wants:

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

Ze źródła mógłbym śmiało usunąć „enable => true” z definicji usługi i ręcznie włączyć dowiązanie symboliczne w konfiguracji lalek, ale czy lalka nie powinna się tym zająć? Czy robię coś strasznie złego?

Clayton Louden
źródło

Odpowiedzi:

6

Dostawca systemowy w Puppet używa dziś tylko dwóch poleceń dla enablestanu usługi :

  • systemctl is-enabled <unit>, sprawdzanie kodu powrotu dla bieżącego stanu włączenia
  • systemctl enable/disable <unit> zmienić to

Komenda enable zgłasza błąd po włączeniu instancji usługi getty @, która jeszcze nie istnieje:

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

Powoduje to błąd pokazany w Puppet (chociaż stderr nie wydaje się być wyświetlany).

Wygląda mi to na lukę w systemie, że nie można włączyć nowych instancji szablonu. W Fedorze jest już BZ # 752774 , ale komentarze sugerują, że może nie zostać wkrótce dodane.

Lepiej jest wysłać prośbę o dodanie funkcji przeciwko Puppetowi, aby dodać wsparcie specjalnie dla umożliwienia nowych instancji. W twoim żądaniu funkcji sugeruję link do objaśnienia Lennarta o instancjach jednostek dla tła.

Dominic Cleal
źródło