Кукольный не может найти классные роли:: веб-сервер

Я пытаюсь заставить классы работать в puppet, но я получаю сообщение об ошибке при попытке запуска агента puppet -t на узле:

root @ webserver01: / etC# puppet agent -t

Информация: Получение плагина Ошибка: Не удалось получить каталог с удаленного сервера: Ошибка 400 на СЕРВЕРЕ: Не удалось найти роли класса:: веб-сервер для локального хоста на узле localhost Предупреждение: Не использовать кэш в сбойном каталоге Ошибка: не удалось получить каталог; пропуск бега

примечание: я отредактировал части localhost выше. У меня есть следующий site.pp:

root@puppet:/etc/puppet/manifests# cat site.pp 
node 'default' {
}

node 'webserver01' {

include roles::webserver

file {'/etc/test':
  ensure  => file,
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  content => 'df',
}

}

путь модуля:

root@puppet:/etc/puppet/manifests# puppet config print modulepath
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')
/etc/puppet/modules:/usr/share/puppet/modules

модули dir:

root@puppet:/etc/puppet/modules# tree --charset=ASCII
.
|-- roles
|   `-- webserver
|       |-- files
|       |-- manifests
|       |   `-- init.pp
|       `-- templates

и класс веб-сервера:

root@puppet:/etc/puppet/modules/webserver/manifests# cat init.pp
class webserver {
package { apache2:
ensure => present,
}

notify {"in webserver class": }

file {'/etc/test2':
ensure  => file,
owner   => 'root',
group   => 'root',
mode    => '0644',
content => 'df',
}
}

Он работает нормально, если у меня есть модуль в /etc/puppet/modules/webserver (удаление части ролей), но он продолжает работать, когда я пытаюсь запустить его с каталогом ролей. Это все еще не удается, если я переименую init.pp в webserver.pp. Может кто-нибудь помочь?

1 ответ

Решение

С roles::webserver, roles это имя модуля, под которым он будет выглядеть - это должно быть там, где manifests каталог есть. Ваша структура каталогов делает webserver модуль, который не будет работать, поскольку он на самом деле не находится в каталоге модуля. Для этого импортировать roles::webserver класс должен быть в любом:

/etc/puppet/modules/roles/manifests/webserver.pp

или же

/etc/puppet/modules/roles/manifests/webserver/init.pp
Другие вопросы по тегам