I am a chef rookie. I want to create a recipe to run a jar at background.
bash 'run_jar' do
code <
wget https://github.com/kiwiwin/jar-repo/releases/download/kiwi/helloworld-1.0.jar -O hello.jar
java -jar hello.jar &
EOH
end
The helloworld-1.0.jar is a program first print "Hello World", then execute a while(true) loop.
I expect when I login to the chef-client machine. It should indicate there is a jar running using "jps" command. But there is no such jar running.
And I can see the hello.jar is downloaded which indicates the code block has been executed already.
What's wrong with this recipe?
解决方案
You are best advised to configure your code to run as a service. Several wrappers available, for example:
Once this is done you can configure chef to manage the new service:
service "myapp_service" do
supports :status => true, :restart => true
start_command "/usr/lib/myapp/bin/myapp start"
restart_command "/usr/lib/myapp/bin/myapp restart"
status_command "/usr/lib/myapp/bin/myapp status"
action [ :enable, :start ]
end