Перво-наперво - вы понимаете, что в ядре уже есть провайдер 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.