Почему модуль 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.