2016-01-05 6 views
1

При включении роли в файле site.pp, я получаю сообщение об ошибке «Не удалось найти роли класса :: developmentmachine»Роли кукольных и профили - Невозможно найти класс

В моем site.pp у меня есть:

node 'laraveldev2-VirtualBox.local' { 
    include roles::developmentmachine 
} 

В папке моих модулей (/ etc/puppetlabs/code/environment/production/modules) У меня есть папка с ролями.

Частичное дерево папки модулей:

 
└── roles 
    ├── developmentmachine 
    │   └── init.pp 
    └── init.pp 

developmentmachine/init.pp имеет:

class roles::developmentmachine { 
    # Code here 
} 

Я проверил путь модуля и правильно (как указано выше).

Насколько мне известно, запись включает роли :: developmentmachine говорит: «Включить класс в папку ролей, внутри папки модулей, называемую developmentmachine», поэтому это должно быть хорошо.

Если кто-нибудь видит проблему с этим или имеет предложение, пожалуйста, дайте мне знать.

Большое спасибо

ответ

1

верхнего уровень init.pp файл только для классов, имеющие свое имя модуля в качестве их полного имени. В вашем модуле «ролей» это будет класс с именем «role» (absolute: ::roles).

Другие определения классов должны храниться в файлах манифеста, названных в честь класса. Например, определение для класса с именем roles::developmentmachine должно появиться в файле modules/roles/manifests/developmentmachine.pp. Кукольный не находит ваш класс, потому что вы его разместили в другом месте.

Если у вас более двух сегментов в полностью квалифицированном классе или имени определенного типа, то это соответствует подструктуре соответствующего каталога манифеста. Однако это не изменяет ни одно из процессов, и ни в коем случае особая значимость файла init.pp не применяется в подкаталогах каталога манифеста модуля. Таким образом, файл modules/roles/manifests/developmentmachine/init.pp - это то, где Puppet будет искать определение класса с именем roles::developmentmachine::init.

Смежные вопросы