What a good solution! Thanks a lot!

2011/6/24 Nan Liu <n...@puppetlabs.com>

> On Thu, Jun 23, 2011 at 7:43 PM, flex <frostyn...@gmail.com> wrote:
> > er...that's what we use now, but define and external node cannot use
> > together, we want to use external node to manage nodes configuration
> easily,
> > so that's why i want to change all the define to class
>
> ENC doesn't support resources, and defines are custom resources,
> however we can still support ENC by defining this in an app class:
>
> class app { $software ) {
>  app::deploy { $software: }
> }
>
> define app::deploy {
>  app:: add { $name:
>     path => "/var/$name"
>  }
> }
>
> node "some_system" {
>  class { app:
>     software => ['app1', 'app2', 'app3'],
>  }
> }
>
> ENC support for parametrized class was added in 2.6.5+. If you need to
> pass custom parameters to the resource, use a hash or write a wrapper
> class for create_resource function to handle any complex usage, and
> that function can be backported from 2.7 to 2.6.x.
>
> Thanks,
>
> Nan
>
> > 2011/6/23 Martin Alfke <tux...@gmail.com>
> >>
> >> On 06/23/2011 11:52 AM, flex wrote:
> >> > But i think class is singletons, means when using class you can not
> get
> >> > more than one copy of the resource, that's the biggest difference
> >> > between class and define.
> >> >
> >> > Your example give a duplicate definition error in my environment.
> >> >
> >> > So is this my fault or there another way?
> >>
> >> You are right. Using class does not work here. But you can use a define
> >> with parameters and call the define with parameters later on:
> >>
> >> define application::add ($appname) {
> >>        file { "/var/$appname":
> >>                ensure => directory,
> >>        }
> >> }
> >>
> >> node 'node1' {
> >>        application::add { app1: appname => app1 }
> >>        application::add { app3: appname => app3 }
> >> }
> >> node 'node2' {
> >>        application::add { app2: appname => app2 }
> >>        application::add { anyname: appname => app4 }
> >> }
> >>
> >> When calling the define you just have to make sure that the give name is
> >> uniq.
> >>
> >>
> >> >
> >> > 2011/6/23 Martin Alfke <tux...@gmail.com <mailto:tux...@gmail.com>>
> >> >
> >> >
> >> >
> >> >     On Jun 23, 7:44 am, Martin Alfke <tux...@gmail.com
> >> >     <mailto:tux...@gmail.com>> wrote:
> >> >     > On 06/23/2011 04:35 AM, flex wrote:
> >> >     >
> >> >     > > These is another question, i have many defines which will
> apply
> >> > an
> >> >     > > application to sepcified path, called as:
> >> >     >
> >> >     > > application::add { "app1": path => "/var/app1" }
> >> >     >
> >> >     > > by this i can apply app1 and app2 in node1, app3 and app4 in
> >> >     node2, etc.
> >> >     >
> >> >     > > now, how do i switch this to a class? Need i create a seperate
> >> >     class for
> >> >     > > all the apps although the only difference is the path?
> >> >     >
> >> >     > You can make use of parameterized classes:
> >> >     >
> >> >     > class application::add($appname) {
> >> >     >         path => '/var/${appname}',
> >> >     > ...
> >> >     >
> >> >     >  }
> >> >     >
> >> >     > Within your node definition you call the class with desired
> >> > parameter:
> >> >     >
> >> >     > node 'node1' {
> >> >     >         class application::add { appname => 'app1' }
> >> >     >         class application::add { appname => 'app3' }
> >> >     >
> >> >     > }
> >> >
> >> >     The mentioned usage of parameterized classes in node definition is
> >> >     wrong.
> >> >     See:
> >> >
> >> >
> http://docs.puppetlabs.com/guides/language_guide.html#parameterised-classes
> >> >
> >> >     node 'node1' {
> >> >        class { 'application::app': appname => 'app1' }
> >> >        class { 'application::add': appname => 'app3' }
> >> >     }
> >> >
> >> >     >
> >> >     > Kind regards,
> >> >     >
> >> >     > Martin
> >> >     >
> >> >     >
> >> >     >
> >> >     >
> >> >     >
> >> >     >
> >> >     >
> >> >     >
> >> >     >
> >> >     > > 2011/6/21 Chris Phillips <ch...@untrepid.com
> >> >     <mailto:ch...@untrepid.com> <mailto:ch...@untrepid.com
> >> >     <mailto:ch...@untrepid.com>>>
> >> >     >
> >> >     > >     I would see a principle whereby nodes should not ever be
> >> > defined
> >> >     > >     within the manifest code at all. To me the manifests
> should
> >> > be
> >> >     > >     written to be very generic, and then use ENC's to modify
> >> > their
> >> >     > >     behaviour at a "user" level. There is still a lot of
> >> >     inconsistency
> >> >     > >     within Puppet as to how device specific data can be
> obtained
> >> >     > >     (extlookup is very useful but rides roughshod over other
> >> >     > >     architectural principles) but I try to stick to keeping
> all
> >> >     > >     manifests generic. I write manifests to manage a package,
> >> > then
> >> >     > >     create a group in dashboard to relate that function to a
> >> >     business
> >> >     > >     need and then a node into that group.
> >> >     >
> >> >     > >     On 21 June 2011 14:48, Martin Willemsma
> >> >     <mwillem...@gmail.com <mailto:mwillem...@gmail.com>
> >> >     > >     <mailto:mwillem...@gmail.com <mailto:mwillem...@gmail.com
> >>>
> >> >     wrote:
> >> >     >
> >> >     > >         We use /etc/puppet/node-definitions/*.pp in site.pp
> >> >     similar to
> >> >     > >         what Carles is saying.
> >> >     >
> >> >     > >         [node-definitions] is a git repo thats being synced on
> >> > both
> >> >     > >         puppermasters. This happens on every push to origin
> >> >     >
> >> >     > >         We use the 'default' node which does the baseline
> >> >     configuration
> >> >     > >         based on a 'role'
> >> >     >
> >> >     > >         In a separate file $fqdn.pp I place the definitions
> for
> >> >     a node.
> >> >     >
> >> >     > >         Are there more people using this kind of approach?
> >> >     >
> >> >     > >         ---
> >> >     > >         Martin
> >> >     >
> >> >     > >         2011/6/21 Carles Amig� <carles.am...@softonic.com
> >> >     <mailto:carles.am...@softonic.com>
> >> >     > >         <mailto:carles.am...@softonic.com
> >> >     <mailto:carles.am...@softonic.com>>>
> >> >     >
> >> >     > >             We had the same problem and we just separated each
> >> >     node (or
> >> >     > >             group of nodes) in one file and then we load them
> >> >     using the
> >> >     > >             following syntax:
> >> >     >
> >> >     > >                    import "nodes/*.pp"
> >> >     >
> >> >     > >             You could also organize those files in
> >> >     subdirectories if you
> >> >     > >             like so:
> >> >     >
> >> >     > >                    import "nodes/*/*.pp"
> >> >     >
> >> >     > >             The only problem we've found with this approach is
> >> > when
> >> >     > >             creating new files, puppetmaster takes a while to
> >> >     "see" them.
> >> >     >
> >> >     > >             El 20/06/2011 5:25, flex escribi�:
> >> >     >
> >> >     > >                 We have many modules and many nodes, every
> node
> >> >     may use
> >> >     > >                 different
> >> >     > >                 module, so it's very unpleasant to modify the
> >> >     nodes.pp
> >> >     > >                 Then i saw the external node, but seems it
> only
> >> >     support
> >> >     > >                 class and we
> >> >     > >                 have many defines called in node.pp
> >> >     >
> >> >     > >                 So here is my question: Is there another way
> for
> >> >     us to
> >> >     > >                 manage so many
> >> >     > >                 nodes easily or should i change all the
> defines
> >> > to
> >> >     > >                 classes and using
> >> >     > >                 external nodes?
> >> >     >
> >> >     > >             --
> >> >     > >             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
> >> >     <mailto:puppet-users@googlegroups.com>
> >> >     > >             <mailto:puppet-users@googlegroups.com
> >> >     <mailto:puppet-users@googlegroups.com>>.
> >> >     > >             To unsubscribe from this group, send email to
> >> >     > >             puppet-users+unsubscribe@__googlegroups.com
> >> >     <http://googlegroups.com>
> >> >     > >             <mailto:
> puppet-users%2bunsubscr...@googlegroups.com
> >> >     <mailto:puppet-users%252bunsubscr...@googlegroups.com>>.
> >> >     > >             For more options, visit this group at
> >> >     > >
> http://groups.google.com/__group/puppet-users?hl=en
> >> >     > >             <
> 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
> >> >     <mailto:puppet-users@googlegroups.com>
> >> >     > >         <mailto:puppet-users@googlegroups.com
> >> >     <mailto:puppet-users@googlegroups.com>>.
> >> >     > >         To unsubscribe from this group, send email to
> >> >     > >         puppet-users+unsubscr...@googlegroups.com
> >> >     <mailto:puppet-users%2bunsubscr...@googlegroups.com>
> >> >     > >         <mailto:puppet-users%2bunsubscr...@googlegroups.com
> >> >     <mailto:puppet-users%252bunsubscr...@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 <mailto:
> puppet-users@googlegroups.com>
> >> >     > >     <mailto:puppet-users@googlegroups.com
> >> >     <mailto:puppet-users@googlegroups.com>>.
> >> >     > >     To unsubscribe from this group, send email to
> >> >     > >     puppet-users+unsubscr...@googlegroups.com
> >> >     <mailto:puppet-users%2bunsubscr...@googlegroups.com>
> >> >     > >     <mailto:puppet-users%2bunsubscr...@googlegroups.com
> >> >     <mailto:puppet-users%252bunsubscr...@googlegroups.com>>.
> >> >     > >     For more options, visit this group at
> >> >     > >    http://groups.google.com/group/puppet-users?hl=en.
> >> >     >
> >> >     > > --
> >> >     > > System Administrator, Focus on System Management and Basic
> >> >     Development
> >> >     >
> >> >     > > --
> >> >     > > 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
> >> > <mailto:puppet-users@googlegroups.com>.
> >> >     > > To unsubscribe from this group, send email to
> >> >     > > puppet-users+unsubscr...@googlegroups.com
> >> >     <mailto:puppet-users%2bunsubscr...@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
> >> >     <mailto:puppet-users@googlegroups.com>.
> >> >     To unsubscribe from this group, send email to
> >> >     puppet-users+unsubscr...@googlegroups.com
> >> >     <mailto:puppet-users%2bunsubscr...@googlegroups.com>.
> >> >     For more options, visit this group at
> >> >     http://groups.google.com/group/puppet-users?hl=en.
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> > System Administrator, Focus on System Management and Basic Development
> >> >
> >> > --
> >> > 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.
> >>
> >
> >
> >
> > --
> > System Administrator, Focus on System Management and Basic Development
> >
> > --
> > 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.
>
>


-- 
System Administrator, Focus on System Management and Basic Development

-- 
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.

Reply via email to