Sim, você precisa criar um arquivo de unidade. O atributo de comando que você especificou não é realmente um atributo válido para o serviço recurso
É melhor adicionar um modelo ERB ao seu arquivo de unidade, aqui está um exemplo :
[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
Em seguida, configure o modelo no Puppet e atualize o systemd. Algum código de exemplo:
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,
}
Agora pronto, você pode iniciar o serviço normalmente:
service { 'myservice':
ensure => running,
enable => true,
provider => provider,
}