Chef infra 厨师:gem依赖于提供者

Chef infra 厨师:gem依赖于提供者,chef-infra,Chef Infra,我们正在为资源创建一个提供程序。它代表在给定数据库中创建mongo用户 class LivingMongoCookbook::UserProvider < Chef::Provider::LWRPBase provides :living_mongo_user def whyrun_supported? true end def action_create db = Mongo::Connection.new(new_resource.host, new_re

我们正在为资源创建一个提供程序。它代表在给定数据库中创建mongo用户

class LivingMongoCookbook::UserProvider < Chef::Provider::LWRPBase 
  provides :living_mongo_user
  def whyrun_supported?
   true
  end
  def action_create
   db = Mongo::Connection.new(new_resource.host, new_resource.port).db(new_resource.database)
   users = db.getUsers
   db.createUser({ user: new_resource.user, pwd: new_resource.passwd, roles: [ new_resource.roles ]})
   new_resource.updated_by_last_action(true)
 end
end
class LivingMongoCookbook::UserProvider
为了能够在db上创建用户,我们正在努力使用mongo ruby驱动程序。然而,我们得到了这样的信息:

================================================================================
  Recipe Compile Error in /tmp/kitchen/cache/cookbooks/living_mongo/libraries/provider_user.rb
   ================================================================================       LoadError
  ---------
  cannot load such file -- mongo       Cookbook Trace:
  ---------------
    /tmp/kitchen/cache/cookbooks/living_mongo/libraries/provider_user.rb:1:in `<top (required)>'       Relevant File Content:
  ----------------------
  /tmp/kitchen/cache/cookbooks/living_mongo/libraries/provider_user.rb:         1>> require 'mongo'
    2:
    3:  # Chef Provider for creating a user and group for Elasticsearch
    4:  class LivingMongoCookbook::UserProvider < Chef::Provider::LWRPBase
    5:
    6:    provides :living_mongo_user
    7:
    8:    def whyrun_supported?
    9:      true
   10:    end
================================================================================
/tmp/kitchen/cache/cookbooks/living\u mongo/libraries/provider\u user.rb中的配方编译错误
=======================================================================================================================================加载错误
---------
无法加载此类文件--mongo Cookbook跟踪:
---------------
/tmp/kitchen/cache/cookbooks/living\u mongo/libraries/provider\u user.rb:1:in``相关文件内容:
----------------------
/tmp/kitchen/cache/cookbooks/living_mongo/libraries/provider_user.rb:1>>需要“mongo”
2:
3:#为Elasticsearch创建用户和组的主厨提供程序
4:class LivingMongoCookbook::UserProvider
似乎mongo驱动程序不可用


有什么想法吗?

假设你有一个最新的ish Chef版本,gem不需要C编译器,将
gem'mongo'
添加到
元数据中。rb
和Chef会帮你安装它。

添加
Chef_gem'mongo'
使用
编译时true
将gem安装到Chef中(在您的提供者运行(参见文档)Ho之前使用ruby,在调用它的类之前,您必须
要求使用“mongo”
。。。