Расширение ресурса Chef 12 (Ruby) - PullRequest
0 голосов
/ 06 июля 2018

Я использую Amazon Opsworks с Chef 12. Это обеспечивается встроенным ресурсом deploy (который был удален в chef 14).

Моя проблема с deploy в том, что мне нужен специальный release_slug

В настоящее время путь к релизу выглядит примерно так:

/ srv / www / development / release / 20180706123524

но мне нужен мой идентификатор сборки

/ SRV / WWW / разработка / релизы / 199

Итак, я пытаюсь расширить Deploy и заменить 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#=

Это то, что я имею в / библиотеки в моей кулинарной книге:

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

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 10 июля 2018

Для начала: это даже удаленно не поддерживается. Вы не должны этого делать, это плохая идея . Этот ресурс был удален из Chef специально, потому что он не подходит для использования. Вместо этого используйте простой git ресурс.

Тем не менее, проблема в том, что вам нужно также создать подкласс Provider::Deploy::Revision и сопоставить его с вашим новым ресурсом через provides :deploy_slug.

...