Не удалось найти класс при запуске применения марионетки с помощью пути к модулю

Выполнение марионеточного применения с переключателем пути к модулю завершается ошибкой с Error: Could not find class apt for vagrant.example.com on node vagrant.example.com

Версия Puppet - 3.7.3, работающая на Ubuntu 14.04, управляемая Vagrant и VirtualBox.

Это команда, которую я выполняю:

sudo puppet apply --debug --verbose --modulepath '/tmp/vagrant-puppet-3/modules-0' /tmp/vagrant-puppet-3/manifests/default.pp

Выход

vagrant@vagrant:~$ sudo puppet apply --debug --verbose --modulepath '/tmp/vagrant-puppet-3/modules-0'  /tmp/vagrant-puppet-3/manifests/default.pp
Warning: Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations
   (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')
Debug: Runtime environment: puppet_version=3.7.3, ruby_version=1.9.3, run_mode=user, default_encoding=US-ASCII
Info: Loading facts
Debug: Loading facts from /tmp/vagrant-puppet-3/modules-0/puppetlabs-apt/lib/facter/apt_update_last_success.rb
Debug: Loading facts from /tmp/vagrant-puppet-3/modules-0/puppetlabs-apt/lib/facter/apt_updates.rb
Info: Loading facts
Debug: Loading facts from /tmp/vagrant-puppet-3/modules-0/puppetlabs-concat/lib/facter/concat_basedir.rb
Info: Loading facts
Debug: Loading facts from /tmp/vagrant-puppet-3/modules-0/puppetlabs-stdlib/lib/facter/facter_dot_d.rb
Debug: Loading facts from /tmp/vagrant-puppet-3/modules-0/puppetlabs-stdlib/lib/facter/pe_version.rb
Debug: Loading facts from /tmp/vagrant-puppet-3/modules-0/puppetlabs-stdlib/lib/facter/puppet_vardir.rb
Debug: Loading facts from /tmp/vagrant-puppet-3/modules-0/puppetlabs-stdlib/lib/facter/root_home.rb
Error: Could not find class apt for vagrant.example.com on node vagrant.example.com
Error: Could not find class apt for vagrant.example.com on node vagrant.example.com

Содержимое / tmp / vagrant-puppet-3 / manifest / default.pp`

node default 
{ 
  include apt
}

Содержимое / tmp / vagrant-puppet-3 / modules-0

drwxr-xr-x 1 root vagrant  714 Jan  5 20:03 puppetlabs-apt
drwxr-xr-x 1 root vagrant  680 Jan  5 20:03 puppetlabs-concat
drwxr-xr-x 1 root vagrant  782 Jan  5 20:03 puppetlabs-postgresql
drwxr-xr-x 1 root vagrant  782 Jan  5 20:03 puppetlabs-stdlib

Запуск puppet module list с тем же путем к модулю действительно отображает список модулей (включая puppetlabs-apt, на который я ссылаюсь), хотя и с предупреждениями о зависимостях.

vagrant@vagrant:~$ puppet module list --debug --verbose --modulepath '/tmp/vagrant-puppet-3/modules-0'
Warning: Missing dependency 'puppetlabs-apt':
  'puppetlabs-postgresql' (v4.1.0) requires 'puppetlabs-apt' (>=1.1.0 <2.0.0)
Warning: Missing dependency 'puppetlabs-concat':
  'puppetlabs-postgresql' (v4.1.0) requires 'puppetlabs-concat' (>= 1.1.0 <2.0.0)
Warning: Missing dependency 'puppetlabs-stdlib':
  'puppetlabs-apt' (v1.7.0) requires 'puppetlabs-stdlib' (>= 2.2.1)
  'puppetlabs-concat' (v1.1.2) requires 'puppetlabs-stdlib' (>= 3.2.0 < 5.0.0)
  'puppetlabs-postgresql' (v4.1.0) requires 'puppetlabs-stdlib' (v4.x)
/tmp/vagrant-puppet-3/modules-0
├── puppetlabs-apt (v1.7.0)
├── puppetlabs-concat (v1.1.2)
├── puppetlabs-postgresql (v4.1.0)
└── puppetlabs-stdlib (v4.5.0)

Странно то, что puppet module list, похоже, находит модули, но ссылка на любой из модулей в моем файле манифеста не выполняется (та же ошибка класса, если я пытаюсь включить postgresql). У меня такое чувство, что мой файл манифеста неверен. Я упустил здесь что-то очевидное?

Ваше здоровье


person Stian S    schedule 05.01.2015    source источник


Ответы (1)


переименуйте папку модуля puppetlabs-apt в apt

или измените код pp

от

include apt 

to

include puppetlabs-apt

Зависит от того, как вы определили в файле APT pp.

person BMW    schedule 05.01.2015
comment
Спасибо, что решил это. Я использую librarian-puppet, и способ, которым я объявил зависимость модуля, привел к тому, что папка была названа puppetlabs-apt, а не просто apt. - person Stian S; 09.01.2015