AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 409297
Accepted
Lee Lowder
Lee Lowder
Asked: 2012-07-20 07:57:42 +0800 CST2012-07-20 07:57:42 +0800 CST 2012-07-20 07:57:42 +0800 CST

将 hiera 与 puppetlabs-spec-helper 一起使用的正确方法?

  • 772

我正在尝试为我的模块编写一些 rspec 测试。他们中的大多数人现在都在使用hiera。

我有一个 .fixures.yml:

fixtures:
  repositories:
    stdlib: https://github.com/puppetlabs/puppetlabs-stdlib.git
    hiera-puppet: https://github.com/puppetlabs/hiera-puppet.git
  symlinks:
    mongodb: "#{source_dir}"    

和一个 spec/classes/mongodb_spec.rb:

require 'spec_helper'

describe 'mongodb', :type => 'class' do

  context "On an Ubuntu install, admin and single user" do
    let :facts do
      {
        :osfamily => 'Debian',
        :operatingsystem => 'Ubuntu',
        :operatingsystemrelease => '12.04'
      }
    end

    it {
      should contain_user('XXXX').with( { 'uid' => '***' } )
      should contain_group('XXXX').with( { 'gid' => '***' } )
      should contain_package('mongodb').with( { 'name' => 'mongodb' } )
      should contain_service('mongodb').with( { 'name' => 'mongodb' } )
    }
  end
end

但是当我运行规范测试时,我得到:

# rake spec
/usr/bin/ruby1.8 -S rspec spec/classes/mongodb_spec.rb --color
F

Failures:

  1) mongodb On an Ubuntu install, admin and single user
     Failure/Error: should contain_user('XXXX').with( { 'uid' => '***' } )
     LoadError:
       no such file to load -- hiera_puppet
     # ./spec/fixtures/modules/hiera-puppet/lib/puppet/parser/functions/hiera.rb:3:in `function_hiera'
     # ./spec/classes/mongodb_spec.rb:15

Finished in 0.05415 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/classes/mongodb_spec.rb:14 # mongodb On an Ubuntu install, admin and single user
rake aborted!
/usr/bin/ruby1.8 -S rspec spec/classes/mongodb_spec.rb --color failed

Tasks: TOP => spec_standalone
(See full trace by running task with --trace)

模块规范测试相对较新,hiera 也是如此。到目前为止,我一直无法找到任何合适的解决方案。(关于 puppet-dev 的来回讨论很有趣,但没有帮助)。

我需要进行哪些更改才能使其正常工作?由于公司政策的原因,从 gem 安装 puppet 并破解 ruby​​lib 并不是一个可行的解决方案。

我正在使用 Ubuntu 12.04 LTS + Puppet 2.7.17 + hiera 0.3.0。

puppet
  • 3 3 个回答
  • 2838 Views

3 个回答

  • Voted
  1. Henrik
    2012-08-30T01:08:34+08:002012-08-30T01:08:34+08:00

    rspec-hiera-puppet gem

    https://github.com/amfranz/rspec-hiera-puppet

    在你的宝石文件中:

    gem 'puppet'
    
    gem 'rspec-puppet'
    gem 'rspec-hiera-puppet'
    gem 'puppetlabs_spec_helper'
    
    gem 'hiera'
    gem 'hiera-puppet'
    

    在你的spec_helper.rb:`require 'rspec-hiera-puppet'

    在spec/shared_context.rb:

    require 'rspec-hiera-puppet'
    
    shared_context "hieradata" do
      let :hiera_config do
        {
         # this specifies that rspec overrides what's been defined in `riak::params`
         :backends => ['rspec', 'puppet'],
         :hierarchy => ['%{location}', '%{environment}', '%{calling_module}'],
         :puppet   => { :datasource => 'params' },
         :rspec    => respond_to?(:hiera_data) ? send(:hiera_data) : {}
        }   
      end 
    end
    

    我在这里使用它:

    https://github.com/haf/puppet-riak

    随意看看。

    • 2
  2. Branan
    2012-07-20T15:07:58+08:002012-07-20T15:07:58+08:00

    不幸的是,puppetlabs_spec_helper目前不支持hiera。我希望 Puppet 中的某个人或社区中的某个人迟早会提出一个好的解决方案。我知道很多人使用 Hiera,我真的希望他们能够使用我们拥有的工具来测试模块。

    • 0
  3. Best Answer
    Lee Lowder
    2012-08-03T07:03:47+08:002012-08-03T07:03:47+08:00

    正式地,hiera 不支持 2.7 的 puppetlabs_spec_helper,并将在未来的 3.x 兼容版本中提供。

    非正式地,Puppet Developers 邮件列表告诉我有一个“hackish”补丁,您可以将其应用于 puppetlabs_spec_helper,这将允许在 hiera 支持下编写规范测试。缺点是,当 3.0 最终问世时,它可能会中断/需要一些重写等。

    • 0

相关问题

  • 如何修复 Puppet 完全限定的参数路径错误?

  • puppet:修改配置文件后强制重启服务

  • 木偶模块资源

  • 傀儡主机名问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve