私は最近puppet module generate
を実行しましたが、単純なモジュールには不要に見える大量のがらくたになってしまいました。つまり、最小限のモジュールの多くは、構成ファイルを1つか2つテンプレート化し、オープンソースのPuppetモジュールに手間のかかる作業を任せることになります。
Puppetのドキュメントでは、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
Gemfile
puppet module generate
によって作成されましたが、あなたのポイントは何ですか?
Gemfile
はRubyの Bundler アプリによって使用され、プロジェクトで使用されるRubyGems(Rubyライブラリ)をインストールします-この場合、使用できるgem開発モジュール。 Puppet内でモジュールをインストールまたは使用する場合は使用されません。
Rubyがインストールされている場合は、次を実行してこれらのgemをインストールできます。
gem install bundler
bundle install # or add `--path vendor` to install within the directory
これらの宝石の目的と、それらが役立つと思われる理由を簡単に説明します。
metadata-json-lint
は、metadata.json
ファイルが正しいことを確認します。そうでない場合、Puppetがモジュールをロードできず、 Forge にアップロードできませんでした。puppetlabs_spec_helper
は、テストなどを実行するためのヘルパーです。puppet-lint
は、PuppetマニフェストをPuppetに対して検証します スタイルガイド ( 詳細 )rspec-puppet
、rspec
を使用すると、Puppetクラス、定義済みタイプなどのテストを記述して、エラーなしでコンパイルされ、正しいパラメーターを使用して適切なリソースを作成できることを確認できます( 詳細 )rake
は、Rakefile
から事前設定されたタスクを実行するために使用されます。つまり、rake test
は上記のすべてを実行し、マニフェスト、ERBファイルなども検証します。rubocop
は、RubyコードをRubyスタイルガイド(puppet-lintと同等)に対して検証しますご提案のとおり、これらはminimalモジュールには必要ありませんが、便利です。テストを記述したり、コードをリントしたりする必要はありませんが、ツールを使用すると、より信頼性の高いモジュールを作成し、Puppet内で機能しないリスクなしに変更を加えることができます。