Почему модуль 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 может не загрузить модуль, и вы не сможете загрузить его в Forge
  • puppetlabs_spec_helper помощник для запуска тестов и т. д.
  • puppet-lint проверяет ваши манифесты Puppet по руководству по стилю Puppet ( подробнее)
  • rspec-puppet, rspec Позволяет вам писать тесты для классов Puppet, определенных типов и т. д., чтобы проверить, что они компилируются без ошибок, и создавать правильные ресурсы с правильными параметрами ( подробнее)
  • rake используется для запуска предварительно настроенных задач из Rakefileт.е. rake test запустит все вышеперечисленное, а также проверит манифесты, файлы ERB и т. д.
  • rubocop проверяет ваш код Ruby на соответствие руководству по стилю Ruby, эквивалентному puppet-lint

Как вы предлагаете, это не обязательно для минимального модуля, но они полезны. Вам не нужно писать тесты или даже писать код, но использование инструментов может помочь вам создать более надежный модуль и внести изменения без риска того, что он не будет работать в Puppet.

Другие вопросы по тегам