1

I want to use the elasticsearch/elasticsearch module in my own module called rehan. The elasticsearch/elasticsearch module provides a class called elasticsearch. If I also want to create a class in my module that makes use of the one in elasticsearch/elasticsearch, how can I achieve this? I have tried:

class rehan::elasticsearch {

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

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

}

The above code errors with:

Error: Duplicate declaration: Class[Rehan::Elasticsearch] is already declared; cannot redeclare at..

Muhammad Rehan Saeed
  • 35,627
  • 39
  • 202
  • 311

1 Answers1

3

In Puppet 3 (even with the future parser!), you need to use:

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

In Puppet 4, the resolution rules for types, classes and variables changed (it doens't try to resolve them contextually), so your code is valid.

Artefacto
  • 96,375
  • 17
  • 202
  • 225