Maneira correta de usar o hiera com o puppetlabs-spec-helper?

2

Estou tentando escrever alguns testes de rspec para meus módulos. A maioria deles agora usa hiera.

Eu tenho um .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}"    

e uma especificação / 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

mas quando executo o teste de especificação, recebo:

# 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)

O teste de especificação do módulo é relativamente novo, assim como o hiera. Até agora, não consegui encontrar nenhuma solução adequada. (as idas e vindas no fantoche-dev foram interessantes, mas não ajudam).

Que mudanças preciso fazer para que isso funcione? A instalação de fantoches a partir de uma joia e a invasão do rubilib não é uma solução viável devido à política corporativa.

Estou usando o Ubuntu 12.04 LTS + Puppet 2.7.17 + hiera 0.3.0.

    
por Lee Lowder 19.07.2012 / 17:57

3 respostas

0

Oficialmente, o hiera não é suportado para o puppetlabs_spec_helper com o 2.7 e estará disponível em um lançamento compatível com o 3.x futuro.

Não oficialmente, a lista de e-mails dos programadores de marionetes disse-me que existe uma "hackish" patch , você pode se inscrever no arquivo puppetlabs_spec_helper, que permitirá que os testes de especificação sejam gravados com o suporte hiera. A desvantagem é que é provável quebrar / exigir algumas reescritas e tal quando 3.0 finalmente sair.     
por 02.08.2012 / 17:03
2

A gema rspec-hiera-puppet

link

No seu Gemfile:

gem 'puppet'

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

gem 'hiera'
gem 'hiera-puppet'

No seu spec_helper.rb : 'exigir' rspec-hiera-puppet '

Em 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

Estou usando aqui:

link

Sinta-se à vontade para dar uma olhada.

    
por 29.08.2012 / 11:08
0

Infelizmente, o puppetlabs_spec_helper não suporta hiera no momento. Espero que haja uma boa solução de alguém em Puppet ou alguém da comunidade, mais cedo ou mais tarde. Eu sei que muitas pessoas usam Hiera, e eu realmente quero que eles sejam capazes de usar as ferramentas que temos para testar módulos.

    
por 20.07.2012 / 01:07

Tags