OpsWorks (Chef) before_symlink 回调不工作

OpsWorks (Chef) before_symlink callback not working

我正在尝试向自定义 deploy Chef 食谱添加 before_symlink 回调,以便在 AWS OpsWorks 上使用。我使用的是 Chef 11 设置,因此亚马逊自己的收据会处理 95% 的事情。

我得到一个 Recipe Compile Error:

NoMethodError
-------------
No resource or method named `before_symlink' for `Chef::Recipe "deploy"'

我还在学习 Chef,所以我不清楚是什么原因造成的。我在自定义配方的开头调用了 include_recipe 'deploy'Amazon’s own custom deploy recipe 似乎也有类似的作用。

这是我的食谱:

include_recipe 'deploy'

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

  if (deploy[:application_type] != 'rails') || (application != 'backscratchers')
    Chef::Log.debug("Skipping deploy::rails application #{application} as it is not a Rails app")
    next
  end

  before_symlink do
    directory "#{release_path}/tmp" do
      mode 0770
    end
  end

end

before_symlink 块实际上必须放在 deploydeploy_revision 配方中。它与亚马逊的 deploy cookbook/recipe.

无关

也就是说,我不建议再使用 deploy 资源,因为它对于大多数需求而言过于复杂。查看 https://github.com/poise/application_examples/ 以获取更多 Chef 风格的应用程序部署示例。