我最近跑了puppet module generate
,结果发现了很多对于一个简单的模块来说看起来没有必要的废话。我的意思是,许多最小的模块相当于模板化一两个配置文件并让开源 Puppet 模块完成繁重的工作。
Puppet 的文档解释了puppet module generate
这里的大部分内容:
https://docs.puppet.com/puppet/4.9/modules_fundamentals.html
但是,我没有看到任何关于 Gemfile 的内容。
Gemfile
生成的有什么用puppet module generate
?
$ 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
Gemfile
制作人puppet module generate
,你有什么意义?
Gemfile
Ruby 的Bundler应用程序使用A来安装项目使用的 RubyGems(Ruby 库)——在本例中,是可用于开发模块的 gem。在 Puppet 中安装或使用模块时不使用它。如果您安装了 Ruby,则可以通过运行以下命令安装这些 gem:
快速了解这些 gem 的用途,以及您可能会发现它们有用的原因:
metadata-json-lint
验证metadata.json
文件是否正确,否则 Puppet 可能无法加载模块并且您无法将其上传到Forgepuppetlabs_spec_helper
是运行测试等的助手。puppet-lint
根据 Puppet样式指南验证您的 Puppet 清单(更多信息)rspec-puppet
,rspec
让您为 Puppet 类、已定义类型等编写测试,以检查它们是否可以正确编译并使用正确的参数创建正确的资源(更多信息)rake
用于从 运行预配置的任务Rakefile
,rake test
即将运行上述所有任务并验证清单、ERB 文件等。rubocop
根据 Ruby 样式指南验证您的 Ruby 代码,相当于 puppet-lint正如您所建议的,这些对于最小模块来说不是必需的,但它们很有用。您不需要编写测试甚至 lint 代码,但使用这些工具可以帮助您创建更可靠的模块并帮助您进行更改,而不会有在 Puppet 中无法运行的风险。