Конфликт имени модуля и имени каталога?

Я создал модуль с именем «learn-tomcat», и у него есть класс с именем tomcat (в init.pp). Когда я пытаюсь включить этот класс в определение узла, он не работает, все следующие комбинации вызывают ошибку, комбинации следующие:

include learn-tomcat::tomcat
include learn-tomcat
include tomcat
include ::tomcat

И ошибка такая же с вышеуказанными комбинациями:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class

Теперь, когда я переименовываю каталог модуля «learn-tomcat» в «tomcat», все начинает работать!

include tomcat
include ::tomcat
include tomcat::tomcat

Теперь меня смущают несколько вещей:

  • Хотя Puppet при создании применяет имя модуля как USERNAME-MODULENAME, следует ли переименовывать его после создания?
  • Я не смог найти соответствующую документацию, но что именно здесь происходит?

person Vishal Biyani    schedule 17.05.2015    source источник
comment
Похоже, это известная проблема с Puppet tickets.puppetlabs.com/browse/PUP-3124   -  person Vishal Biyani    schedule 17.05.2015


Ответы (1)


Здесь вы найдете подробное объяснение того, как пространства имен и области действия работают в puppet.

По примеру из статьи:

name:                   file path:
apache                  <modulepath>/apache/manifests/init.pp
apache::mod             <modulepath>/apache/manifests/mod.pp
apache::mod::passenger  <modulepath>/apache/manifests/mod/passenger.pp

Итак, в вашей ситуации вы также можете сделать одно из следующих предложений:

  1. В модуле learn-tomcat в init.pp переименуйте класс tomcat в learn-tomcat, а затем создайте экземпляр:

    include learn-tomcat

  2. Переименуйте файл init.pp в tomcat.pp, а затем создайте его экземпляр:

    include learn-tomcat::tomcat

person kkamilpl    schedule 17.05.2015