Кукольный не распознает мой модуль - PullRequest
1 голос
/ 18 ноября 2011

Я пытаюсь создать собственного провайдера для пакета, но по некоторым причинам я продолжаю получать

ошибка: не удалось запустить клиент конфигурации Puppet: поставщик параметров не удалось: недопустимый поставщик пакетов 'piprs' в /usr/local/src/ops/services/puppet/modules/test/manifests/init.pp:5

Я добавил pluginsync = true в puppet.conf как на клиенте, так и на сервере. Я создал следующий файл rb в модуле / test / lib / puppet / provider / package / piprs.rb. Я в основном пытаюсь создать пользовательский поставщик для типа ресурса пакета

#require 'puppet/provider/package' 

Puppet::Type.type(:package).provide(:piprs,
      :parent => ::Puppet::Provider::Package) do

      commands : pip => "/usr/local/bin/pip"

      desc "Python packages via `pip`."

      def create
            pip "freeze"
      end

      def destroy
      end

      def exists?
      end

    end

В файле puppet.conf есть следующий атрибут источника

      pluginsource = puppet://puppet/plugins

Я не уверен, что это такое. Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий.

1 Ответ

2 голосов
/ 18 ноября 2011

Перво-наперво - вы понимаете, что в ядре уже есть провайдер Python?

https://github.com/puppetlabs/puppet/blob/master/lib/puppet/provider/package/pip.rb

Если это не то, что вы хотите - тогда давайте двигаться дальше ...

Для начала - попробуйте свой модуль без мастера Puppet - это все равно будет лучше для разработки.Вы должны убедиться, что Ruby может найти путь к библиотеке:

export RUBYLIB=<path_to_module>/lib

Затем попробуйте написать небольшой тест в файле .pp:

package { "mypackage": provider => "piprs" }

И запустить его локально:

puppet apply mytest.pp

Это исключит ошибку кода в вашем провайдере по сравнению с проблемой синхронизации плагина.

Я заметил, что между двоеточием и командой есть пробел - это не ваша проблема, не так ли?

commands : pip => "/usr/local/bin/pip"

Если вы можете заставить это работать без Puppetmaster, ваша проблема связана с синхронизацией.

Есть пара вещей, которые могут пойти не так - убедитесь, что файл синхронизируется 'правильно на клиенте:

ls /var/lib/puppet/lib/puppet/provider/package

Вы должны увидеть там файл piprs.rb.Если это так, возможно, вам нужно убедиться, что ваш libdir установлен правильно:

puppet --configprint libdir

В большинстве случаев это должно указывать на / var / lib / puppet / lib.

...