【问题标题】:Handling Two Puppet Classes with the Same Name处理两个同名的 Puppet 类
【发布时间】:2023-04-02 22:48:02
【问题描述】:

我想在我自己的模块rehan 中使用elasticsearch/elasticsearch 模块。 elasticsearch/elasticsearch 模块提供了一个名为elasticsearch 的类。如果我还想在我的模块中创建一个使用 elasticsearch/elasticsearch 中的类,我该如何实现?我试过了:

class rehan::elasticsearch {

    class { 'elasticsearch':
        manage_repo  => true,
        repo_version => '2.2',
        require      => Class['java']
    }

    elasticsearch::instance { 'es-01':
        require => Package['elasticsearch'],
    }

}

上面的代码错误有:

错误:重复声明:Class[Rehan::Elasticsearch] 已声明;无法重新声明..

【问题讨论】:

    标签: elasticsearch puppet librarian-puppet


    【解决方案1】:

    在 Puppet 3 中(即使使用未来的解析器!),您需要使用:

    class { '::elasticsearch':
        manage_repo  => true,
        repo_version => '2.2',
        require      => Class['java']
    }
    

    在 Puppet 4 中,类型、类和变量的解析规则发生了变化(它不会尝试根据上下文解析它们),因此您的代码是有效的。

    【讨论】:

    • 我希望以某种方式使用命名空间,例如 elasticsearch::elasticsearch
    • @MuhammadRehanSaeed 啊,我误解了这个问题。我猜你正在使用 Puppet 3。
    • @MuhammadRehanSaeed 我改变了答案。
    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 2014-01-28
    • 2012-03-21
    • 1970-01-01
    • 2020-05-29
    • 2021-01-10
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多