2011-11-17 100 views
1

我試圖創建包的自定義提供商,但由於某種原因,我不斷獲取木偶不承認我的模塊

錯誤:無法運行木偶配置客戶端:失敗參數提供 :無效的包裝供應商「 piprs'在 /usr/local/src/ops/services/puppet/modules/test/manifests/init.pp:5

我在客戶端和服務器在puppet.conf添加pluginsync =真。我在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 

我不知道它是什麼。如果您需要更多詳情,請發表評論。

回答

2

首先要做的第一件事 - 你是否意識到核心中已經有一個Python pip提供者?

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

如果這不是你想要的 - 然後讓我們討論...

對於初學者 - 試試你的模塊沒有一個木偶大師 - 這將是更好的發展呢。你需要確保紅寶石可以找到庫路徑:

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中/傀儡/在大多數情況下的lib。

+0

謝謝..我會測試它並更新你..但它非常具有描述性。我希望它能幫助我解決問題!而且我意識到已經有一個流行提供者,我試圖寫一個新的,但要學習 –