Puppet generado files unidad unitd?

Esperaba lo siguiente para iniciar realmente mi service:

service{'legacy': ensure => running, start => "cd /vagrant/nginx-reverse-proxy/legacy && /usr/bin/bundle exec ruby app.rb -o 127.0.0.1 -e production -p ${port}", provider => 'systemd', } 

Sé y entiendo que el command de inicio no es correcto, pero no sé cómo iniciar la aplicación real de Ruby Sinatra. De hecho, esperaba que algo así funcionara:

 service{'legacy': ensure => running, command => "cd /vagrant/nginx-reverse-proxy/legacy && /usr/bin/bundle exec ruby app.rb -o 127.0.0.1 -e production -p ${port}", provider => 'systemd', } 

Algo así como cron. Estoy acostumbrado a daemontools, y el model de systemd es completamente diferente. ¿Tengo que crear el file de la unidad yo mismo? ¿Y vincular el file de la unidad?

He encontrado ¿Cómo habilitar el service instanciado systemd con títeres? que inicia algún tipo de dispositivo USB. También encontré camptocamp / títere-systemd que parece manejar systemd sí mismo. Los documentos de Puppet en el proveedor de services de sistema son más bien escasos en detalles.

¿Cómo se crea un service systemd utilizando Puppet?

One Solution collect form web for “Puppet generado files unidad unitd?”

Sí, es necesario crear un file de unidad. El atributo de command que ha especificado no es realmente un atributo válido para el recurso de service

Lo mejor es agregar una plantilla ERB con el file de la unidad, aquí hay un ejemplo:

 [Unit] Description=My Ruby Service Wants=basic.target After=basic.target network.target [Service] WorkingDirectory=/vagrant/nginx-reverse-proxy/legacy ExecStart=/usr/bin/bundle exec ruby app.rb -o 127.0.0.1 -e production -p 4567" KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target 

A continuación, configure la plantilla en Títeres y asegúrese de actualizar systemd. Algunos ejemplos de código:

 file { '/lib/systemd/system/myservice.service': mode => '0644', owner => 'root', group => 'root', content => template('modulename/myservice.systemd.erb'), }~> exec { 'myservice-systemd-reload': command => 'systemctl daemon-reload', path => [ '/usr/bin', '/bin', '/usr/sbin' ], refreshonly => true, } 

Ahora que está hecho, puede iniciar el service de forma normal:

 service { 'myservice': ensure => running, enable => true, provider => provider, } 
  • Marioneta: Pasa el valor del facter a la class (module del títere del sensu)
  • ¿Suprimir post de error / advertencia específico en títeres?
  • hecho externo no disponible en la primera corrida de títeres
  • ¿Cómo puedo tener títeres para implementar claves ssh para usuarios virtuales?
  • Transformar \ n a una nueva línea aunque la variable de input sea única citada en Puppet
  • el agente títere no se ejecuta automáticamente
  • Puppet: parámetro sustituto en nombre de hecho
  • Hashes con títeres y templates
  • Clases de marionetas fuera de order a pesar del explícito uso del operador de flechas
  • ¿Qué types de resources de títeres requieren un metaparámetro de auditoría para forzar a Títeres a administrar el recurso si se elimina?
  • Marioneta y gestión de .k5login con parameters y matrices
  • ¿Cómo puedo evaluar una class no en cada corrida de títeres?
  • títere no firma cert o recibe nuevas requestes
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.