Ничего себе, я был так близок... одинарные кавычки:
$ ack-grep '\> \\'
Понятый это после подтверждения, что мое соответствие regex было допустимым использованием: http://regexpal.com/ и просто, оказалось, имел одинарные кавычки от попытки чего-то еще.
Итак ... это немного смущает, но ...
Среды.
Прямо в моем /etc/puppet.conf
файле это:
[master]
manifest=$confdir/manifests/site.pp
modulepath=$confdir/environments/$environment/modules:$confdir/modules
После того, как я бросил на него strace
, чтобы выяснить, где он ищет файлы, я кое-что заметил. Он искал custommod в / etc / puppet / environment / production / modules
, и поскольку там был каталог (пустой), он не проверял / etc / puppet / modules
. Очевидно, при импорте модуля он проверяет наличие каталога, а не наличия файла (init.pp).
Удалите этот пустой каталог, все начнет работать.
Запустите марионеточный агент, используя другую среду, все начинает работать .
Мораль истории:
Пути к Puppet Environment не действуют как bash $ PATH.
Я столкнулся с той же проблемой, но имел другое исправление
Если вы сгенерируете модуль марионетки следующим образом:
puppet module generate foo-example_module
Он создаст модуль с именем example_module
с foo
пространство имен. Все манифесты будут находиться в каталоге с именем foo-example_module
Имя класса, определенного в init.pp, должно совпадать с именем папки.
Простое исправление:
mv foo-example_module example_module
Если вы запустите puppet-lint, он выдаст следующее сообщение:
ERROR: example_module not in autoload module layout on line 42
Если вы используете Puppetfile с r10k или librarian-puppet, вам также может потребоваться удалить пространство имен, чтобы файлы помещаются без префикса 'foo' в каталог модулей.
до:
mod 'foo-example_module',
:git => git@github.com:foo/example_module'
после:
mod 'example_module',
:git => git@github.com:foo/example_module'
Натолкнулся на аналогичную проблему с марионеткой 3.7.1 для Федора: Не смог найти куклу класса для моего.сервера
Решение:
sudo ln -s /my/local/copy/puppet/modules /etc/puppet/
Тогда работает
. Другая проблема, которая может возникнуть, - это когда в вашем модуле есть недопустимый файл metadata.json
.
Убедитесь, что файл metadata.json
] имеют все обязательные поля (см. https://docs.puppet.com/puppet/latest/reference/modules_metadata.html#allowed-keys-in-metadatajson )
У меня была аналогичная проблема. В моем случае имя класса было «onehost :: change_IoT_password_reminder». После использования strace я обнаружил, что марионетка искала файл modules / onehost / manifest / change_iot_password_reminder.pp. Похоже, использование прописных букв в именах классов - не лучшая идея, даже если это не первая буква класса.