Назад | Перейти на главную страницу

Почему модуль марионетки создает Gemfile и какова его цель?

Я недавно бегал puppet module generate, и закончился кучей чепухи, которая казалась ненужной для простого модуля. Я имею в виду, что многие минимальные модули сводятся к созданию одного или двух конфигурационных файлов и позволяют модулю Puppet с открытым исходным кодом выполнять тяжелую работу.

В документации 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, какой в ​​тебе смысл?

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

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