【问题标题】:OpsWorks (Chef) before_symlink callback not workingOpsWorks(厨师) before_symlink 回调不起作用
【发布时间】: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 文件添加到应用程序本身。

标签: chef-infra aws-opsworks


【解决方案1】:

before_symlink 块必须实际进入 deploydeploy_revision 配方。它与亚马逊的deploycookbook/recipe 无关。

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

【讨论】:

  • 感谢您,我已经阅读了更多内容,我将考虑使用 OpsWorks 的 Chef 12 产品,以及您指出的平衡的第 3 方食谱。
猜你喜欢
  • 1970-01-01
  • 2016-07-19
  • 2017-01-27
  • 1970-01-01
  • 2015-11-02
  • 2015-01-27
  • 2015-02-06
  • 2013-10-10
  • 1970-01-01
相关资源
最近更新 更多