扩展 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.

将其映射到您的新资源