Назад | Перейти на главную страницу

puppet не может найти роли класса :: webserver

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