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

Почему марионетка не может найти указанный мной ресурс?

У меня есть определенный ресурс в /etc/puppet/modules/autofs/manifests/mount.pp (из модуля pdx-cat / autofs в https://forge.puppetlabs.com/pdxcat/autofs).

У меня есть модуль в /etc/puppet/modules/sheffield/manifests/autofs/net.pp, который пытается использовать определенный тип autofs :: mount.

class sheffield::autofs::net {
  include ::autofs

  autofs::mount { '/net':
    map     => '',
    options => '-hosts',
  }
}

Но когда клиент пытается получить каталог, я получаю следующую ошибку:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type autofs::mount at /etc/puppet/modules/sheffield/manifests/autofs/net.pp:7 on node rhel6test.shef.ac.uk

Любые идеи? Я подумал, что, возможно, проблема в том, что тип не загружается автоматически, поскольку он имеет то же имя (autofs), что и подкласс в sheffield :: autofs, поэтому я попытался переименовать его в sheffield :: auto-fs, и это не имело никакого значения.

Я попытался скопировать mount.pp из / etc / puppet / autofs / manifestests в / etc / puppet / sheffield / manifest / autofs /, и он нашел тип ресурса, но не работал из-за загрузки других недостающих зависимостей в mount.pp (и, очевидно, это не лучшее решение проблемы).

поскольку include ::autofs не выдает ошибок, вы можете использовать то же самое :: префикс для определения:

class sheffield::autofs::net {
  ::autofs::mount { '/net':
    ...
  }
}

Если это не работает, вероятно, есть ошибка в пути к модулю или других связанных настройках.

include ::autofs линия на самом деле не нужна. Mount-define включает все необходимые классы.

У меня была та же проблема: пользовательский ресурс определен, классы четко указаны в Foreman.

Для меня проблема оказалась в том, что metadata.json был неправильно сформирован и отсутствовал атрибут "источник". Стоит проверить, кажется ли, что больше ничего не решает проблему!