为什么傀儡模块生成一个Gemfile,它的目的是什么?

我最近运行puppet module generate ,并最终导致了一大堆废话,看起来不必要的一个简单的模块。 我的意思是,许多最小的模块足够模板化一个或两个configuration文件,并让开源Puppet模块完成繁重的工作。

Puppet的文档解释了大部分puppet module generate在这里puppet module generate

https://docs.puppet.com/puppet/4.9/modules_fundamentals.html

但是,我没有看到关于Gemfile的任何内容。

puppet module generateGemfile生成的是什么?

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

这里是这个文件的内容:

 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 

puppet module generate Gemfile puppet module generate ,你有什么意思?

Ruby的Bundler应用程序使用Gemfile来安装项目使用的RubyGems(Ruby库) – 在这种情况下,可以使用gem来开发模块。 在Puppet中安装或使用模块时不使用它。

如果您安装了Ruby,您可以运行以下命令安装这些gem:

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

这些gem的目的,以及为什么你可能会发现它们有用的一个快速破坏:

  • metadata-json-lintvalidationmetadata.json文件是否正确,否则Puppet可能无法加载模块,也无法将其上传到Forge
  • puppetlabs_spec_helper是运行testing等的帮手
  • puppet-lintvalidation你的Puppet清单对木偶风格指南 ( 更多信息 )
  • rspec-puppetrspec让你编写testingPuppet类,定义types等,以检查他们编译没有错误,并创build正确的参数资源( 更多信息 )
  • rake用于从Rakefile运行预先configuration的任务,即rake test将运行以上所有操作,并validation清单,ERB文件等。
  • rubocopvalidation你的Ruby代码对Ruby风格指南,相当于puppet-lint

正如你所build议的,这些对于一个最小的模块来说是不必要的,但是它们是有用的。 您不需要编写testing甚至是编写代码,但使用这些工具可以帮助您创build更可靠的模块,并帮助您进行更改,而不会在Puppet中无法使用。