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

Марионетка: класс уже объявлен

В настоящее время я реорганизую структуру кода марионетки в модель, которая использует профили и роли.

Я начал с профилей и тестировал, но уже столкнулся с проблемами: /

В моем определении узла я делаю следующее:

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) исправлено.