кукольный агент не распознает модули r10k - PullRequest
0 голосов
/ 05 февраля 2019

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

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 Ответ

0 голосов
/ 05 февраля 2019

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

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

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

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

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

...