В настоящее время я реорганизую структуру кода марионетки в модель, которая использует профили и роли.
Я начал с профилей и тестировал, но уже столкнулся с проблемами: /
В моем определении узла я делаю следующее:
node 'dev.server' { include profile::php }
# modules/profiles/manifests/php.pp class profile::php { include apache::mod::php class{ 'php': } php::module { "mcrypt": } php::module { "mysql": } php::module { "gd": } }
Когда я запускаю марионеточный агент на узле, я получаю сообщение об ошибке
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Class[Profile::Php] is already declared; cannot redeclare at /etc/puppet/environments/production/modules/profile/manifests/php.pp:5 on node
Однако, когда я переименовываю профиль в profile :: php2, он работает. Что вызывает проблему, о которой уже заявлено?
Изменение class{ 'php': }
к class{ '::php': }
(обратите внимание на двойное двоеточие перед php) исправлено.