我是 Chef 的新手我正在尝试创建一个简单的自定义 Recipe 。我有一个托管在私有(private)二进制存储库上的可执行 JAR,我希望我的 Recipe 安装此 JAR,将服务器配置为能够运行该 JAR,然后 实际运行它。
具体来说,我希望这本 Recipe 能够:
- 下载
http://myrepo.example.com/myapp.jar
到节点上的/opt/myapp/bin
;那么 - 将
MYAPP_HOME
环境变量设置为/opt/myapp/bin
;那么 - 运行
java -jar/opt/myapp/bin/myapp.jar --setup
显然,这本书依赖于提前在服务器上安装 Java(最好是 8+)。
使用这个excellent guide作为我的起点,这是迄今为止我最好的尝试:
创建 Recipe :
knife create cookbook 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
但这显然是错误的。任何人都可以给我任何正确方向的想法或插入吗?
最佳答案
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。这是用于将应用程序作为服务运行的初始化脚本,包括 bash 命令和设置环境变量。
关于java - 编写自定义 Chef Recipe 来安装和运行自制应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31437392/