我是Chef的新手,正在尝试制作一个简单的自定义食谱。我有一个可执行的JAR,我已经托管在私有二进制仓库上,我希望我的cookbook能够安装这个JAR,配置服务器以便能够运行JAR,然后 实际上运行它。
具体来说,我希望食谱能够:
http://myrepo.example.com/myapp.jar
下载到/opt/myapp/bin
;然后MYAPP_HOME
env var设为/opt/myapp/bin
;然后java -jar /opt/myapp/bin/myapp.jar --setup
显然,这本食谱依赖于提前在服务器上安装Java(理想情况下为8+)。
以excellent guide为出发点,这是我迄今为止最好的尝试:
刀创建食谱cookbook-myapp -o cookbooks / -r md
/cookbooks/cookbook-myapp/recipes/default.rb
package http://myrepo.example.com/myapp.jar
service "myapp" do
action :install
end
env 'MYAPP_HOME' do
value '/opt/myapp/bin'
end
bash 'run_jar' do
code <<-EOH
java -jar ${MYAPP_HOME}/myapp.jar --setup
EOH
end
但这显然是错误的。任何人都可以给我的正确方向的任何想法或推动?
答案 0 :(得分:1)
remote_file '/path/to/myapp' do
source 'http://myapp.repo.com/myapp.jar'
end
template '/etc/init.d/myapp.conf' do
source 'myapp.init.config.erb'
variables :home => '/opt/myapp/bin'
end
service 'myapp' do
action [:enable, :start]
end
当然,您需要在cookbook/templates/default
中编写myapp.init.conf.erb。这是用于将应用程序作为服务运行的init脚本,包括bash命令和设置环境变量。