我在Linux 6计算机上使用Puppet 3.5.1。
我有一个本地模块" A"包括一个子模块" B"。这样的子模块" B"位于" / etc / puppet / modules / A / modules / B"。
我指的是子模块" B"在我的模块" A"类:(/ etc / puppet / modules / Amanifest / init.pp文件)
class A::one (
...
class { 'B':
val1 => 'abc',
val2 => 'abc',
}
...
)
B然后没有参考任何其他人。 当我启动木偶大师和木偶代理时,我在代理上收到以下错误:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class B
我错过了什么?
我看到一些帖子的解决方案是添加一个'包括B'为puppet agent节点。如果这是解决方案,因为这是另一个模块中的模块,我该如何引用它?
修改1
我移动了子模块" B"进入主模块文件夹,来自" / etc / puppet / modules / A / modules"到" / etc / puppet / modules"。它给出了错误:
Error: Duplicate declaration: Class[B] is already declared; cannot redeclare at /etc/puppet/modules/A/manifest/init.pp
答案 0 :(得分:1)
在自动加载器方面,模块中有modules/
子树是无效的结构。子模块没有语义。
如果您迫切希望此特定案例有效,则必须将/etc/puppet/modules/A
添加到modulepath
配置设置中。
您可能希望提出一个新问题并描述您实际尝试解决的问题,因为您的代码架构似乎有点不干净。