While setting up some cluster machines to run masterless I ran into this bug.  I had a directory structure like this:

code
  module1
    manifests
  module2
    modules
      module3
        manifests

 When running puppet apply with the modulepath code:code/module1/modules I ran into this error, specifically using the logrotate module.

Error: Evaluation Error: Resource type not found Logrotate::Size (file: code/modules/logrotate/manifests/conf.pp, line: 32, column:12)

But Logrotate::Size is defined in code/module2/modules/logrotate/types/size.pp which is accessible.  I had to turn on some extra debugging to figure out that the autoloader didn't like that two related directories were in the modulepath and there were two ways to reach the definition from the modulepath.  I had to rework my directories like this to get it to work.

code
  modules
    module1
  control
    module2
      modules
        module3
          manifests
   

After making the change, the autoloader was able to uniquely identify the datatype definition.  

Bit of a weird problem that I definitely created for myself by nesting my modulepath like that.

Add new comment

About the Author...