Search code examples
puppet

Can not find class during Puppet apply


My puppet structure is as follows

/puppet
    /manifests
        /nodes
            redis.pp
        site.pp
    /modules

The site.pp resembles

class base {
  include ml-basefw
  include ml-users
  include ml-filelimits
  include repoforge
  include epel

class { 'ml-yumrepo':
  base_url => "http://${puppet_server}/yumrepo"
 }
}
import 'nodes/*.pp'

node default {
   include base
}

When I run

puppet apply  --modulepath=/puppet/modules:/puppet/manifests --noop --debug /puppet/manifests/nodes/redis.pp

I receive

Error: Could not find class base for redis-1.test.ml.com on node redis-1.test.ml.com

Is there something non-standard about my file layout that precludes me from using apply?

I am not the maintainer of the puppet module so I am not able to alter the file structure or layout.

There are numerous related questions but I wasn't able to relate them to the problem that I am having.

Edit1 : Adding redis.pp

node /^redis-\d+(.stage)?(.test)?(.aws)?.ml.com$/ {
include base
include epel

class { 'redis':
package_ensure => '2.8.15-1.el6.remi',
service_ensure => 'running',
conf_bind => '0.0.0.0',
conf_port => '6379',
}

firewall { '176 allow port 6379 for redis traffic':
chain => 'INPUT',
state => ['NEW'],
dport => '6379',
proto => 'tcp',
action => 'accept'
 }
}

Solution

  • What happens when you run puppet apply against your site.pp file instead? You probably don't have a node definition in your redis.pp file (nor should you).