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.

Reply via email to