在 OpsWorks Chef 配方中安装依赖项

Installing dependencies in an OpsWorks chef recipe

我在 OpsWorks 上有一个简单的静态站点层,它具有在 bower.json 文件中列出的依赖项。但是,当我在我的部署配方中 运行 bower install --allow-root 时,我得到 ENOENT No bower.json present。如何在 chef 脚本中找到项目的正确路径以便安装 bower 模块?

OpsWorks 为您的配方提供包含应用程序目录的部署 JSON。查看 the AWS documentation 了解有关此负载的更多信息。

假设您的 bower.json 在项目的根目录中,您可以在 Chef 配方中添加此命令:

node[:deploy].each do |app, deploy|
   execute "bower_install" do
        command "bower install --allow-root"
        cwd "#{deploy[:deploy_to]}/current"
   end
end

此秘诀将为您层中的所有应用程序执行此任务。您可以通过检查 app 变量值为特定应用程序执行它。

#{deploy[:deploy_to]} 是您的应用程序目录,current 是您最新版本的符号 link。但是,我宁愿在 deploy hook script 中而不是在部署配方中执行此类操作,因为 OpsWorks 让您的应用程序在 运行 部署配方之前可用。但那是另外一回事了。

希望这对您有所帮助。