编写自定义Chef cookbook来安装和运行自行开发的应用程序

时间:2015-07-15 17:41:22

标签: java chef cookbook

我是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

但这显然是错误的。任何人都可以给我的正确方向的任何想法或推动?

1 个答案:

答案 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命令和设置环境变量。