扩展 Chef 12 资源 (Ruby)
Extending a Chef 12 resource (Ruby)
我正在使用 Amazon Opsworks 和 Chef 12。
这带有一个名为 deploy 的内置资源(在 chef 14 中被删除)。
我对 deploy 的问题是我需要自定义 release_slug
目前发布的路径如下所示:
/srv/www/development/releases/20180706123524
但我需要我的构建 ID
/srv/www/development/releases/199
所以我正在尝试扩展 Deploy,并将 release_slug (20180706123524) 替换为我的自定义 ID。
我可以在 chef 资源中看到这正是他们对带时间戳的部署所做的:https://github.com/chef/chef/blob/12.5-stable/lib/chef/provider/deploy/timestamped.rb
我在这里发现了一个类似的 Whosebug 问题
这是我食谱中 /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
我在这里错过了什么?
首先:这甚至不受远程支持。 你不应该这样做,这是个坏主意。这个资源是专门从 Chef 中删除的,因为它不好用。请改用简单的 git
资源。
就是说,问题是您还需要子类化 Provider::Deploy::Revision
并通过 provides :deploy_slug
.
将其映射到您的新资源
我正在使用 Amazon Opsworks 和 Chef 12。 这带有一个名为 deploy 的内置资源(在 chef 14 中被删除)。
我对 deploy 的问题是我需要自定义 release_slug
目前发布的路径如下所示:
/srv/www/development/releases/20180706123524
但我需要我的构建 ID
/srv/www/development/releases/199
所以我正在尝试扩展 Deploy,并将 release_slug (20180706123524) 替换为我的自定义 ID。 我可以在 chef 资源中看到这正是他们对带时间戳的部署所做的:https://github.com/chef/chef/blob/12.5-stable/lib/chef/provider/deploy/timestamped.rb
我在这里发现了一个类似的 Whosebug 问题
这是我食谱中 /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
我在这里错过了什么?
首先:这甚至不受远程支持。 你不应该这样做,这是个坏主意。这个资源是专门从 Chef 中删除的,因为它不好用。请改用简单的 git
资源。
就是说,问题是您还需要子类化 Provider::Deploy::Revision
并通过 provides :deploy_slug
.