【问题标题】:Installing dependencies in an OpsWorks chef recipe在 OpsWorks 厨师配方中安装依赖项
【发布时间】:2015-03-28 02:58:14
【问题描述】:

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

【问题讨论】:

  • 显示你的食谱。但是执行资源有一个cwd 属性来告诉它应该在哪个目录中运行。见the documentation here
  • 我知道cwd 命令的工作原理,但我想知道如何以编程方式定位我应该用于该命令的目录
  • 再次,显示您的食谱,我猜不出您使用的是哪个提供商。部署路径必须在某个地方定义,没有更多细节真的很难猜出你在做什么。

标签: chef-infra bower aws-opsworks


【解决方案1】:

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 是指向最新版本的符号链接。但是,我宁愿在 deploy hook script 中执行此类操作,而不是在部署方案中,因为 OpsWorks 在运行部署方案之前使您的应用程序可用。但那是另一回事了。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 2016-05-28
    • 2016-07-19
    • 2017-01-27
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多