Почему модуль 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 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 , в чем вам смысл?

4
задан 24 February 2017 в 03:31
1 ответ

Gemfile используется приложением Ruby Bundler для установки RubyGems (библиотек Ruby), используемых проектом - в данном случае гемов, которые могут быть используется для разработки модуля. Он не используется при установке или использовании модуля в 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.

1
ответ дан 3 December 2019 в 04:08

Теги

Похожие вопросы