Puppet指模块内的模块

时间:2014-05-13 06:41:13

标签: linux puppet sysadmin

我在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

1 个答案:

答案 0 :(得分:1)

在自动加载器方面,模块中有modules/子树是无效的结构。子模块没有语义。

如果您迫切希望此特定案例有效,则必须将/etc/puppet/modules/A添加到modulepath配置设置中。

您可能希望提出一个新问题并描述您实际尝试解决的问题,因为您的代码架构似乎有点不干净。