我正在将Amazon Opsworks与Chef 12一起使用。 它带有一个名为deploy的内置资源(已在厨师14中删除)。
部署的问题是我需要自定义release_slug
当前版本的发布路径如下:
/ srv / www / development / releases / 20180706123524
但是我需要我的建筑编号
/ srv / www / development / releases / 199
所以我想扩展Deploy,并用我的自定义ID替换release_slug(20180706123524)。 我可以在Chef资料来源中看到,这正是他们使用带有时间戳的部署所做的:https://github.com/chef/chef/blob/12.5-stable/lib/chef/provider/deploy/timestamped.rb
我在https://stackoverflow.com/questions/16114469/how-to-extend-a-lightweight-provider-in-chef#=
处发现了类似的stackoverflow问题这是我的食谱中/ libraries下的内容:
deploy_slug.rb:
class Chef
class Resource::DeploySlug < Resource::DeployRevision
def initialize(name, run_context = nil)
super
@resource_name = :deploy_slug
end
end
end
在尝试修改release_slug之前,我只希望部署使用我的自定义资源实际运行。 在我的食谱中,我尝试使用deploy_slug来调用它。
这是我得到的错误:
* deploy_slug[/srv/www/development] action deploy
================================================================================
Error executing action `deploy` on resource 'deploy_slug[/srv/www/development]'
================================================================================
Chef::Exceptions::ProviderNotFound
我在这里想念什么?
答案 0 :(得分:0)
首先:甚至不支持此功能。 您不应这样做,这是个坏主意。该资源已从Chef中删除,特别是因为它不好用。请使用简单的git
资源。
也就是说,问题在于您还需要继承Provider::Deploy::Revision
并通过provides :deploy_slug
将其映射到新资源。