簡體   English   中英

無法從Puppet提供程序加載紅寶石寶石

[英]Could not load ruby gem from Puppet provider

自從Puppet 3.8升級到Puppet 4.2以來,我的模塊遇到了一些麻煩。 看起來無法加載gemfile。 這是我收到的錯誤消息:

Error: Could not autoload puppet/provider/test/test: cannot load such file -- rest-client
Error: Could not autoload puppet/type/test: Could not autoload puppet/provider/test/test: cannot load such file -- rest-client
Error: Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/test: Could not autoload puppet/provider/test/test: cannot load such file -- rest-client at /home/vagrant/tmp/manifests/mytest.pp:1:1 on node 

我通過以下命令應用清單:

$ puppet apply manifests/mytest.pp --modulepath=~/tmp/modules/ --debug

這是清單代碼:

$ cat manifests/mytest.pp 
test {"mytest": }

提供者代碼:

$ cat modules/test/lib/puppet/provider/test/test.rb 
require 'rubygems'
require 'rest-client'

Puppet::Type.type(:test).provide(:test) do
  desc "Just testing"

  def create
    puts "Entered create "
  end

  def destroy
  end

  def exists?
   return false
  end
end

輸入代碼:

$ cat modules/test/lib/puppet/type/test.rb
Puppet::Type.newtype(:test) do

  @doc = "Just testing."

  ensurable do
    defaultvalues
    defaultto :present
  end

  newparam(:name, :namevar => true) do
    desc 'An arbitrary name used as the identity of the resource.'
  end
end

我正在測試vagrant Box的1.0.2版本( centos-6.6-64-puppet

人偶版本:

$ puppet --version
4.2.1

RubyGems版本:

$ gem --version
1.3.7

使用Yum安裝的rest-client gem(rubygem-rest-client.noarch):

$ gem which rest-client
/usr/lib/ruby/gems/1.8/gems/rest-client-1.6.1/lib/rest-client.rb

目錄結構:

$ tree
.
├── manifests
│   └── mytest.pp
└── modules
    └── test
        └── lib
            └── puppet
                ├── provider
                │   └── test
                │       └── test.rb
                └── type
                    └── test.rb

你有這個問題嗎? 知道如何解決嗎?

我終於找到原因了! Puppet代理隨附了自己的Ruby和Gem二進制文件,它們位於/ opt / puppetlabs / puppet / bin /

通過執行以下命令:

$ facter rubysitedir rubyversion
rubysitedir => /opt/puppetlabs/puppet/lib/ruby/site_ruby/2.1.0
rubyversion => 2.1.6

我注意到它指向的目錄與標准位置不同。

$ which ruby
/usr/bin/ruby
$ ruby --version
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]

為了解決該問題,我使用了puppet 4附帶的同一gem來安裝rest-client:

sudo /opt/puppetlabs/puppet/bin/gem install rest-client

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM