Como habilitar o serviço instanciado pelo systemd com o fantoche?

9

Eu tenho o seguinte serviço de marionetes:

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

Quando tento aplicar essa configuração no meu cliente, ele lança o seguinte erro:

err: /Stage[mainξ//Node[puppetclient.la/Service[[email protected]{/enable: mudança de falsa para verdadeira falhou: Não foi possível ativar [email protected]:

O serviço está funcionando bem e posso ter certeza de que foi iniciado na inicialização do sistema adicionando um link simbólico para getty.target.wants:

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

De origem, eu poderia ir em frente e remover "enable => true" da definição de serviço e incluir um link simbólico manualmente na configuração do fantoche, mas o fantoche não deve cuidar disso? Estou fazendo algo terrivelmente errado?

Clayton Louden
fonte

Respostas:

6

O provedor systemd no Puppet hoje usa apenas dois comandos para o enableestado do serviço :

  • systemctl is-enabled <unit>, verificando o código de retorno para o estado de ativação atual
  • systemctl enable/disable <unit> mudar isso

O comando enable gera um erro quando você ativa uma instância do serviço getty @ que ainda não existe:

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

Isso está causando o erro mostrado no Puppet (embora o stderr não pareça ser exibido).

Parece-me uma lacuna no systemd que você não pode ativar novas instâncias de um modelo. Já existe o BZ # 752774 no Fedora , mas os comentários sugerem que ele não poderá ser adicionado tão cedo.

É melhor registrar uma solicitação de recurso no Puppet para adicionar suporte especificamente para ativar novas instâncias. Em sua solicitação de recurso, eu sugeriria um link para a explicação de Lennart de instâncias de unidade para o segundo plano.

Dominic Cleal
fonte