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.