Por que o módulo puppet generate produz um Gemfile e qual é o seu propósito?

3

Eu recentemente corri puppet module generate e acabei com uma porcaria que parecia desnecessária para um módulo simples. Quero dizer, muitos módulos mínimos equivalem a modelar um ou dois arquivos de configuração e permitir que um módulo Puppet de código aberto faça o trabalho pesado.

A documentação do Puppet explicou a maior parte do puppet module generate aqui:

link

No entanto, não vi nada sobre o Gemfile.

De que uso é o Gemfile gerado por puppet module generate ?

$ puppet module generate nathan-myapp_consul
$ cd myapp_consul/
$ ls
Gemfile     README.md   Rakefile    examples    manifests   metadata.json   spec

Aqui está o conteúdo deste arquivo:

source ENV['GEM_SOURCE'] || 'https://rubygems.org'

puppetversion = ENV.key?('PUPPET_VERSION') ? ENV['PUPPET_VERSION'] : ['>= 3.3']
gem 'metadata-json-lint'
gem 'puppet', puppetversion
gem 'puppetlabs_spec_helper', '>= 1.0.0'
gem 'puppet-lint', '>= 1.0.0'
gem 'facter', '>= 1.7.0'
gem 'rspec-puppet'

# rspec must be v2 for ruby 1.8.7
if RUBY_VERSION >= '1.8.7' && RUBY_VERSION < '1.9'
  gem 'rspec', '~> 2.0'
  gem 'rake', '~> 10.0'
else
  # rubocop requires ruby >= 1.9
  gem 'rubocop'
end

Gemfile produzido por puppet module generate , qual é o seu objetivo?

    
por Nathan Basanese 24.02.2017 / 02:20

1 resposta

2

Um Gemfile é usado pelo aplicativo Bundler do Ruby para instalar RubyGems (bibliotecas Ruby) usadas pelo projeto - nesse caso, gemas que pode ser usado para desenvolver o módulo. Não é usado ao instalar ou usar o módulo no Puppet.

Se você tem o Ruby instalado, você pode instalar essas gemas executando:

gem install bundler
bundle install  # or add '--path vendor' to install within the directory

Um resumo rápido do objetivo dessas gemas e por que você pode achá-las úteis:

  • metadata-json-lint verifica se o arquivo metadata.json está correto, caso contrário, o Puppet não pode carregar o módulo e você não pode enviá-lo para o Forge
  • puppetlabs_spec_helper é um ajudante para executar testes, etc.
  • puppet-lint valida seus manifestos do Puppet contra o guia de estilo do Puppet (mais informações )
  • rspec-puppet , rspec permitem que você escreva testes para classes Puppet, tipos definidos etc para verificar se eles compilam sem erros e criam os recursos corretos com os parâmetros corretos ( mais informações )
  • rake é usado para executar tarefas pré-configuradas a partir de Rakefile , ou seja, rake test executará todas as opções acima e também valida manifestos, arquivos ERB, etc.
  • rubocop valida seu código Ruby com um guia de estilo Ruby, o equivalente a fantoche-lint

Como você sugere, eles não são necessários para um módulo mínimo , mas são úteis. Você não precisa escrever testes nem mesmo apagar seu código, mas usar as ferramentas pode ajudá-lo a criar um módulo mais confiável e ajudá-lo a fazer alterações sem o risco de não funcionar no Puppet.

    
por 24.02.2017 / 09:29

Tags