Кукольный не может найти классные роли:: веб-сервер
Я пытаюсь заставить классы работать в 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