我最近运行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 generate的Gemfile生成的是什么?
$ 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-puppet , rspec让你编写testingPuppet类,定义types等,以检查他们编译没有错误,并创build正确的参数资源( 更多信息 ) rake用于从Rakefile运行预先configuration的任务,即rake test将运行以上所有操作,并validation清单,ERB文件等。 rubocopvalidation你的Ruby代码对Ruby风格指南,相当于puppet-lint 正如你所build议的,这些对于一个最小的模块来说是不必要的,但是它们是有用的。 您不需要编写testing甚至是编写代码,但使用这些工具可以帮助您创build更可靠的模块,并帮助您进行更改,而不会在Puppet中无法使用。