I think I got it. I was confused because of the manifest path and the 
special init.pp main class. Didn't realize the init.pp requires to be in 
the top main levels and for subdirectories classes it has to be within 
manifest path. 

In our scenario, we used the pkg directory within adhoc to push pkgs 
forward depending on the version. So for instance, we would have 
/opt/puppetlabs/puppet/modules/adhoc/pkg/adhoc-0.1.1/manifests/{init.pp,etc} 
which we would have a script that pushes it into Redhat Satellite depending 
on the package release required. 

I think in our scenario it should be fine since Satellite ends up looking 
at it as 
/opt/puppetlabs/puppet/modules/adhoc/manifests
in the end. I was just testing if all the puppet code was working since 
running "puppet parser validate [file]" would return those warnings. 

Thanks for the explanation! 

On Tuesday, June 18, 2019 at 9:06:42 AM UTC-4, jcbollinger wrote:
>
>
>
> On Monday, June 17, 2019 at 9:09:52 AM UTC-5, lhu wrote:
>>
>> Thanks Ben.
>>
>> Would you know why this wouldn't work? I have the module manifest folder 
>> under adhoc/pkg/dan/manifest/
>>
>> #puppet parser validate init.pp
>>
>> Warning: Unacceptable location. The name 'adhoc::pkg::dan::init' is 
>> unacceptable in file 
>> '/opt/puppetlabs/puppet/modules/adhoc/pkg/dan/manifests/init.pp' (file: 
>> /opt/puppetlabs/puppet/modules/adhoc/pkg/dan/manifests/init.pp, line: 1, 
>> column: 1)
>>
>>
>
> I don't quite follow what you're trying to do there.  Your module's name 
> is "adhoc" (it *cannot* be "adhoc::pkg::dan" because the colon (:) is not 
> among the characters allowed in module or class names).  With that being 
> the case, the subdirectories of the module layout belong under adhoc/, 
> not deeper in the tree.  In particular, a class named 
> adhoc::pkg::dan::init belongs in file adhoc/manifests/pkg/dan/init.pp.  
> I'm not a fan of such a deep naming structure, but that would work.
>
> Note also that class names of the form <module name>::init are reserved, 
> but if you *do* have a deeper tree then you can have classes whose last 
> name segment is "init" at deeper levels.
>
>  
>
>>
>> So I assumed with the init.pp file this would work? 
>> class adhoc::pkg::dan {
>>
>>
>> }
>>
>>
> No. If /opt/puppetlabs/puppet/modules/adhoc/pkg were in your modulepath 
> then you could put the main class of module "dan" in the file you name, i.e.
>
> class dan {
> }
>
> That's the only way it works with your placement of the "manifests" 
> directory, but DON'T DO THAT.  Setting up a modulepath in containing pairs 
> of directories where one is nested inside the other is confusing and 
> unnecessary, not to mention that it triggers bugs in some versions of 
> Puppet.
>
>  
>
>> I also tried just using the module name prior to the manifest folder but 
>> that didn't work as well.
>>
>
> If you want a class named adhoc::pkg::dan then it belongs in a file named 
> adhoc/manifests/pkg/dan.pp, relative to some folder in your modulepath.  
> The init.pp filename is special only for a module main class, and 
> therefore only at the top level of the module.
>
>
> John
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/fb4b739f-8abb-4c8e-8696-984ace4a516b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to