¿Cómo habilitar el servicio instanciado systemd con puppet?

9

Tengo el siguiente servicio de marionetas:

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

Cuando trato de aplicar esta configuración en mi cliente, arroja el siguiente error:

err: /Stage[mainfont>//Node[puppetclientfont>/Service[[email protected]>/enable: cambio de falso a verdadero fallido: No se pudo habilitar [email protected]:

El servicio funciona bien y puedo asegurarme de que se inicia en el arranque del sistema agregando un enlace simbólico a getty.target.wants:

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

De origen, podría continuar y eliminar "enable => true" de la definición del servicio e incluir un enlace simbólico manualmente en la configuración de la marioneta, pero ¿no debería la marioneta ocuparse de esto? ¿Estoy haciendo algo terriblemente mal?

Clayton Louden
fuente

Respuestas:

6

El proveedor systemd en Puppet hoy solo usa dos comandos para el enableestado del servicio :

  • systemctl is-enabled <unit>, comprobando el código de retorno para el estado de habilitación actual
  • systemctl enable/disable <unit> para cambiarlo

El comando enable arroja un error cuando habilita una instancia del servicio getty @ que aún no existe:

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

Esto está causando el error que se muestra en Puppet (aunque parece que stderr no se muestra).

Me parece un vacío en systemd que no puede habilitar nuevas instancias de una plantilla. Ya hay BZ # 752774 en Fedora , pero los comentarios sugieren que podría no agregarse pronto.

Es mejor que presente una solicitud de función contra Puppet para agregar soporte específicamente para habilitar nuevas instancias. En su solicitud de características, sugeriría vincular a la explicación de Lennart de instancias de unidad para el fondo.

Dominic Cleal
fuente