Почему модуль puppet генерирует Gemfile и какова его цель?
Я недавно побежал puppet module generate
и закончил с кучей дерьма, которое выглядело ненужным для простого модуля. Я имею в виду, что множество минимальных модулей сводятся к шаблонному файлу конфигурации или двум и позволяют тяжелому подъему сделать модуль 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
какой смысл в тебе?
1 ответ
Gemfile
используется приложением Ruby's Bundler для установки RubyGems (библиотек Ruby), используемых проектом - в данном случае, gems, которые можно использовать для разработки модуля. Он не используется при установке или использовании модуля в Puppet.
Если у вас установлен Ruby, вы можете установить эти гемы, выполнив:
gem install bundler
bundle install # or add `--path vendor` to install within the directory
Краткое изложение целей этих драгоценных камней и почему вы можете найти их полезными:
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
Как вы предлагаете, это не обязательно для минимального модуля, но они полезны. Вам не нужно писать тесты или даже писать код, но использование инструментов может помочь вам создать более надежный модуль и внести изменения без риска того, что он не будет работать в Puppet.