On Wed, Jan 25, 2012 at 9:59 AM, Ashley Penney <apen...@gmail.com> wrote:
> I don't have a solution but I do want to chime in and state that modules > that > exist just to collect together virtual resources is a horrible thing. > We're just > talking about working around the way Puppet works right now rather than > defining what the end solution should be. > Absolutely right Ashley. Please lets focus the conversation here on how things *should* be. > > I would be happiest with some kind of thing that can handle multiple > versions > of the same resource and work out a way to apply them as one entry. Like > others suggested something that can merge all the unique attributes > together > for one entry. After all, if they've been included on the host all of > those attributes > should apply so I can't see a dangerous downside to this. > > It has to be better than trying to organize things so you only use a > resource > once and having all kinds of tricks and complicated workarounds. I don't > want > my modules to have to rely on some weird generic module full of virtual > resources > just to use a package without clashing into a module written by a > coworker. I > think modules should be capable, if possible, of standing alone, and this > is ruining > that basic concept. > > On Wed, Jan 25, 2012 at 12:12 PM, Dan Bode <d...@puppetlabs.com> wrote: > >> >> >> On Tue, Jan 24, 2012 at 1:28 AM, Felix Frank < >> felix.fr...@alumni.tu-berlin.de> wrote: >> >>> Hi, >>> >>> there was a discussion in the "can we deprecate defined() in Telly" >>> thread about how we can even begin to design Forge modules without it. >>> >>> A recurring problem is that multiple modules rely on certain packages, >>> and there is no good model (yet) to unite their resource declarations. >>> Therefore it's a common (although imho disgusting) workaround to do >>> things like >>> if !defined(Package[foo]) { package { "foo": ensure => installed } } >>> >>> On 01/20/2012 11:34 PM, Cody wrote: >>> > Defining all somewhat common packages in a central location becomes >>> > unrealistic when you no longer "control" the code that is in every >>> > module you use. If you obtain five modules from the forge and they >>> > all require a specific package and so all define that package your not >>> > going to convince, nor is it a good design to require everyone to move >>> > the package definitions from that collection of modules. They need to >>> > function as a collection out of the box. >>> >>> Agreed. How can this be accomplished? >>> >>> Perhaps there needs to be some kind of "Forge common" module that by >>> policy can only ever declare virtual resources (packages are a prominent >>> >> >> Until there is a way to distinguish between collection of regular versus >> virtual resources, I hope that we don't do anything that advocates the >> usage of virtual resources. >> >> The problem is that collections (like below) meant to >> establish multiple dependencies unfortunately have the side effect of >> realizing virtual resources. >> >> Class['apt'] -> Package<| |> >> >> >>> example). >>> A user who wishes to retain the capability of using modules from the >>> Forge would be required to install this common module, and replace their >>> own resource declarations with realizations of the common resources. >>> For this to work, it's definitely a plus that you can override >>> attributes in collections: >>> Package<| title == "apache2": |> { ensure => "2.2.12" } >>> ...although that does bear some caveats. Does this still work in recent >>> versions? >>> >>> If we can take this for granted, all Forge modules can adhere to that >>> same standard. >>> >>> This is a rough sketch of how things might possibly work, and surely has >>> lots of wrinkles of its own. Still, I'm quite sure we need a proper way >>> to rid ourselves of the horror that is the parse order dependent check >>> for defined resources ;-) >>> >>> Cheers, >>> Felix >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Puppet Users" group. >>> To post to this group, send email to puppet-users@googlegroups.com. >>> To unsubscribe from this group, send email to >>> puppet-users+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/puppet-users?hl=en. >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Puppet Users" group. >> To post to this group, send email to puppet-users@googlegroups.com. >> To unsubscribe from this group, send email to >> puppet-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/puppet-users?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. > -- Nigel Kersten Product Manager, Puppet Labs -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.