Puppet
為什麼 puppet 模組生成一個 Gemfile,它的目的是什麼?
我最近跑了
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 install bundler bundle install # or add `--path vendor` to install within the directory
快速了解這些 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 中無法執行的風險。