Я пытаюсь заставить классы работать в марионетке, но при попытке использовать puppet agent -t на узле возникает ошибка:
корень @ webserver01: / etc # марионеточный агент -t
Информация: получение плагина Ошибка: не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: не удалось найти роли класса :: веб-сервер для localhost на узле 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
каталог модулей:
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. Может кто поможет?
С участием roles::webserver
, roles
это имя модуля, в котором он будет искать - это должно быть то место, где manifests
каталог есть. Ваша структура каталогов делает webserver
модуль, который не будет работать, поскольку на самом деле его нет в каталоге модуля. Для импорта roles::webserver
класс должен быть либо в:
/etc/puppet/modules/roles/manifests/webserver.pp
или
/etc/puppet/modules/roles/manifests/webserver/init.pp