【问题标题】:Puppet referring to a module inside a modulePuppet 引用模块内部的模块
【发布时间】:2014-06-30 17:16:02
【问题描述】:

我在 Linux 6 机器上使用 Puppet 3.5.1。

我有一个包含子模块“B”的本地模块“A”。这样子模块“B”位于“/etc/puppet/modules/A/modules/B”中。

我在我的模块“A”类中引用子模块“B”:(/etc/puppet/modules/A/manifest/init.pp 文件)

class A::one (
...
    class { 'B': 
        val1 => 'abc',
        val2 => 'abc',
    }
...
)

B 然后不引用任何其他内容。 当我启动 puppet master 和 puppet 代理时,代理上出现以下错误:

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

我错过了什么?

我看到一些帖子的解决方案是为 puppet 代理节点添加“包含 B”。如果是这样的话,既然这是另一个模块中的一个模块,我该如何引用它?

编辑 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

【问题讨论】:

    标签: linux puppet sysadmin


    【解决方案1】:

    就自动加载器而言,模块中的modules/ 子树不是有效的结构。子模块没有语义。

    如果您非常希望这种特殊情况能够正常工作,则必须将 /etc/puppet/modules/A 添加到您的 modulepath 配置设置中。

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

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      相关资源
      最近更新 更多