木偶没有认出我的模块

时间:2011-11-17 23:17:21

标签: freebsd puppet

我正在尝试为包创建一个自定义提供程序,但由于某些原因,我一直在

  

错误:无法运行Puppet配置客户端:参数提供程序   失败:无效的包提供商'piprs'在   /usr/local/src/ops/services/puppet/modules/test/manifests/init.pp:5

我在客户端和服务器的puppet.conf中添加了pluginsync = true。我在module / test / lib / puppet / provider / package / piprs.rb中创建了以下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 个答案:

答案 0 :(得分:2)

首先要做的事情 - 您是否意识到核心中已存在Python pip提供程序?

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

如果那不是您想要的 - 那么让我们继续......

对于初学者 - 尝试没有Puppet master的模块 - 无论如何这对于开发来说会更好。您需要确保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。