Viren
Viren

Reputation: 5962

Trying to run puppet yield "Error: Could not find class"

Firstly, to be honest I'm pretty new to Puppet world. I'm trying to build a puppet script for my server.

Here's how my puppet structures looks like -

.
|-- environments
|   `-- example_env
|       |-- manifests
|       |-- modules
|       `-- README.environment
|-- manifests
|   |-- node.pp
|   `-- site.pp
|-- modules
|   |-- nginx
|   |   `-- manifests
|   |       `-- nginx.pp
|   |-- sudoers
|   |   |-- files
|   |   |   `-- sudoers
|   |   `-- manifests
|   |       `-- sudoers.pp
|   `-- users
|       `-- manifests
|           `-- users.pp
|-- puppet.conf
`-- templates

here how my node.pp and site.pp look like this.

# /etc/puppet/manifests/node.pp
node werain {
  include sudoers
} 

and

 # etc/puppet/manifests/site.pp
 import 'node.pp'

and finally my sudoers.pp file look like this.

# /etc/puppet/modules/sudoers/manifests/sudoers.pp
class sudoers {
  file { '/etc/sudoers':
    mode: '0400',
    source: 'puppet:///modules/sudoers/sudoers',
    owner: 'root',
    group: 'root'
  }
}

Any clue what I'm doing wrong.

I'm running the puppet command like this.

puppet apply /etc/puppet/manifests/site.pp --modulepath=/etc/puppet/modules/

my puppet version is 3.8.4

Upvotes: 0

Views: 532

Answers (1)

John Bollinger
John Bollinger

Reputation: 180201

You have a module named sudoers, and in it a class with the same name. Puppet will look for the definition of that class in modules/sudoers/manifests/init.pp, but you have put it in modules/sudoers/manifests/sudoers.pp instead. That latter is where Puppet would look for a class named sudoers::sudoers.

Upvotes: 2

Related Questions