On Thu, Jun 23, 2011 at 7:43 PM, flex <[email protected]> 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 <[email protected]>
>>
>> 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 <[email protected] <mailto:[email protected]>>
>> >
>> >
>> >
>> > On Jun 23, 7:44 am, Martin Alfke <[email protected]
>> > <mailto:[email protected]>> 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 <[email protected]
>> > <mailto:[email protected]> <mailto:[email protected]
>> > <mailto:[email protected]>>>
>> > >
>> > > > 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
>> > <[email protected] <mailto:[email protected]>
>> > > > <mailto:[email protected] <mailto:[email protected]>>>
>> > 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� <[email protected]
>> > <mailto:[email protected]>
>> > > > <mailto:[email protected]
>> > <mailto:[email protected]>>>
>> > >
>> > > > 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
>> > > > [email protected]
>> > <mailto:[email protected]>
>> > > > <mailto:[email protected]
>> > <mailto:[email protected]>>.
>> > > > To unsubscribe from this group, send email to
>> > > > puppet-users+unsubscribe@__googlegroups.com
>> > <http://googlegroups.com>
>> > > > <mailto:puppet-users%[email protected]
>> > <mailto:puppet-users%[email protected]>>.
>> > > > 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
>> > > > [email protected]
>> > <mailto:[email protected]>
>> > > > <mailto:[email protected]
>> > <mailto:[email protected]>>.
>> > > > To unsubscribe from this group, send email to
>> > > > [email protected]
>> > <mailto:puppet-users%[email protected]>
>> > > > <mailto:puppet-users%[email protected]
>> > <mailto:puppet-users%[email protected]>>.
>> > > > 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
>> > [email protected] <mailto:[email protected]>
>> > > > <mailto:[email protected]
>> > <mailto:[email protected]>>.
>> > > > To unsubscribe from this group, send email to
>> > > > [email protected]
>> > <mailto:puppet-users%[email protected]>
>> > > > <mailto:puppet-users%[email protected]
>> > <mailto:puppet-users%[email protected]>>.
>> > > > 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
>> > [email protected]
>> > <mailto:[email protected]>.
>> > > > To unsubscribe from this group, send email to
>> > > > [email protected]
>> > <mailto:puppet-users%[email protected]>.
>> > > > 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 [email protected]
>> > <mailto:[email protected]>.
>> > To unsubscribe from this group, send email to
>> > [email protected]
>> > <mailto:puppet-users%[email protected]>.
>> > 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 [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected].
>> > 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 [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.