【发布时间】:2023-03-24 07:05:01
【问题描述】:
我正在尝试将 before_symlink 回调添加到自定义 deploy Chef 配方,以便在 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块包装在deploy块中来实现此功能,但是这也第二次部署了应用程序!所以我仍然不确定如何向 AWS 部署配方添加回调...... -
似乎唯一的方法是 1) 完全重写
deploy配方,添加新位或 2) 将config/deploy/before_symlink.rb文件添加到应用程序本身。