Кукольный агент не распознает модули r10k

Пожалуйста, помогите мне настроить пользовательские модули кукол из github. Модули правильно перетаскиваются в мастер, но не распознаются на узлах агента вообще.

Puppetfile

mod "puppet-lamp",
    :git => "https://github.com/blablabla/puppet_lamp.git",
    :ref => "659fe4056060426d3a1449sdfgbc290571f5714f"

environment.conf

modulepath = modules:$basemodulepath

r10k правильно вытаскивает модуль из github

.
└── production
    ├── environment.conf
    ├── modules
    │   └── lamp
    │       └── manifests
    │           ├── apache.pp
    │           └── test.pp
    └── Puppetfile

4 directories, 4 files

apache.pp

class apache {

  package { 'httpd':
    ensure => installed,
  }

  service { 'httpd':
    enable => true,
    ensure => 'running'
  }

}

site.pp

include apache

Но когда я запускаю агент, ничего не применяется!

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Applying configuration version '1549348460'
Notice: Applied catalog in 0.01 seconds

Пробовал с использованием определения узла, без изменений...

node 'default' {
  include 'apache'
}

Используя последнюю куклу здесь

[root@puppetmaster environments]# puppetserver --version
puppetserver version: 6.2.0

[root@node01 ~]# puppet -V
6.2.0

Может кто-нибудь посоветовать, пожалуйста, что я делаю не так? Заранее спасибо!

1 ответ

Решение

Ваше имя класса должно соответствовать имени модуля, чтобы соответствовать ограничениям автозагрузки. В вашем случае вы назвали модуль lampи вы назвали класс apache, Более простой путь здесь будет переименовать класс lamp так как он упоминается как lamp везде в соответствии с вашим вопросом.

Другое ограничение автозагрузки - имя вашего класса должно совпадать с именем модуля и именем манифеста. В этом случае ваш манифест называется apache.ppЭто означает, что класс должен быть lamp::apache как в определении, так и в декларации. Более легким путем было бы переименовать манифест из apache.pp в init.pp так что имя класса должно просто соответствовать имени модуля.

Учитывая обе эти проблемы с пространством имен в вашей автозагрузке, два шага, которые проще всего заставить вас работать:

  • Переименовать определения и ссылки на apache в ваших манифестах lamp (например class lamp а также include lamp).
  • Переименуй свой apache.pp проявить к init.pp,

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

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