Ruby 如何在OpsWorks中运行独立程序?

Ruby 如何在OpsWorks中运行独立程序?,ruby,chef-infra,aws-opsworks,Ruby,Chef Infra,Aws Opsworks,我相信有一个简单的答案。我们的程序是一个可执行的jar文件,我们有一个shell脚本包装器 OpsWorks从S3获取分发zip文件 我们正在尝试解压缩该文件并运行位于bin/run\u server.sh 我目前正在为它编写一个自定义部署配方,运行在类型为“Other”的层上 以下是我的尝试: include_recipe 'deploy' node[:deploy].each do |application, deploy| # assume the zip file has

我相信有一个简单的答案。我们的程序是一个可执行的jar文件,我们有一个shell脚本包装器

  • OpsWorks从S3获取分发zip文件
  • 我们正在尝试解压缩该文件并运行位于
    bin/run\u server.sh
我目前正在为它编写一个自定义部署配方,运行在类型为“Other”的层上

以下是我的尝试:

include_recipe 'deploy'

node[:deploy].each do |application, deploy|

    # assume the zip file has been extracted at this point, 
    # and the CWD is the extracted contents
    execute "run the server" do
        command 'bash bin/run_server.sh'
        action :run
    end
end
这无法声明它找不到
bin/run\u server.sh


提前感谢。

您是否尝试过明确设置cwd

execute "run the server" do
    command 'bash bin/run_server.sh'
    cwd "/path/to/your/stuff"
end

我不知道zip文件是从哪里下载的。我已通过ssh访问该实例,但找不到该实例或其内容的任何跟踪。该实例应位于节点[:deploy][application][:deploy_to],但由于使用自定义层,可能您缺少部署步骤。你可以分享更多关于你的自定义配方设置和应用程序配置的详细信息吗?我认为现在的情况是,设置包括部署步骤,但应用程序尚未部署。我认为为了达到预期的效果,我需要在我的应用程序中添加一个部署钩子,以便chef在收到应用程序代码后立即运行它,而不是在安装时。