我在 /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
有什么想法吗?我认为这可能是由于无法自动加载类型而导致的问题,因为它与 sheffield::autofs 中的子类具有相同的名称 (autofs),因此我尝试将其重命名为 sheffield::auto-fs,但没有任何区别。
我尝试将 mount.pp 从 /etc/puppet/autofs/manifests 复制到 /etc/puppet/sheffield/manifests/autofs/,它确实找到了资源类型,但由于 mount.pp 中缺少大量其他依赖项而无法工作(显然,这不是解决问题的好方法)。
答案1
由于include ::autofs
没有错误,您应该能够::
在定义上使用相同的前缀:
class sheffield::autofs::net {
::autofs::mount { '/net':
...
}
}
如果不起作用,则可能是模块路径或其他相关设置有错误。
include ::autofs
这行实际上并不需要。 mount-define 包含所有必要的类。
答案2
我有同样的问题:自定义资源定义,类别清晰可见,在 Foreman 中列出。
对我来说,问题在于格式metadata.json
错误,缺少“源”属性。如果没有其他方法可以解决问题,值得检查一下!