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, } 
  • Puppet - copy varios files al directory
  • Acceder a la variable de nodo en la class y usarla en una condición
  • Módulo de marionetas puppetlabs-apache default run tiene ciclos de dependencia
  • ¿Cómo configurar algunos nodos en pausa / hold / noop?
  • ¿Hay una manera de get las classs de nivel superior incluidas en un nodo títere?
  • Referencia de cada título en la matriz de títulos
  • Cuando se utiliza el command init del nodo títere, son los parameters a especificar en el file answers.install
  • Instalación de Foreman en la instancia amazon ec2
  • Marioneta que instala múltiples packages resultados en el package error
  • ¿En títere hay alguna manera de no realizar resources virtuales con collections, solo con realizar?
  • ¿El agente de la marioneta en Windows a less que no funcione cómo pienso?
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.