Am Freitag, 12. Juli 2013 17:03:11 UTC+2 schrieb Nan Liu:
>
> On Fri, Jul 12, 2013 at 7:45 AM, Christian Flamm 
> <[email protected]<javascript:>
> > wrote:
>
>> Hi,
>> I'm having trouble understanding the added value Virtual Resources 
>> provide. Let's say I'm having two different modules (that usually are 
>> assigned to different agents) that both contain a common resource (let's 
>> say a user). If I want to easily make it possible to assign both modules to 
>> the same agent - without suffering from the "duplicate resource 
>> declaration" error - I could make the resource definition virtual and 
>> realize it in different modules. See this simplified example.
>>
>> > cat $modulesdir/virtual/manifests/init.pp
>> class virtual {
>>   @user { 'admin': ensure => present }
>> }
>>
>> > cat $modulesdir/mailserver/manifests/init.pp
>> class mailserver {
>>   realize(User['admin'])
>>   # some more mailserver stuff...
>> }
>>
>> > cat $modulesdir/webserver/manifests/init.pp
>> class webserver {
>>   realize(User['admin'])
>>   # some more webserver stuff...
>> }
>>
>> > cat $manifestsdir/nodes.pp
>>  node /<somenode>/ {
>>   include virtual
>>   include mailserver
>>   include webserver
>> }
>>
>>
>> My question: How is that different, more convenient or more flexible than 
>> extracting that admin user into its own module? Like that:
>>
>> > cat $modulesdir/adminuser/manifests/init.pp
>> class adminuser {
>>   user { 'admin': ensure => present }
>> }
>>
>> > cat $modulesdir/mailserver/manifests/init.pp
>> class mailserver {
>>   # some more mailserver stuff...
>> }
>>
>> > cat $modulesdir/webserver/manifests/init.pp
>> class webserver {
>>   # some more webserver stuff...
>> }
>>
>> > cat $manifestsdir/nodes.pp
>>  node /<somenode>/ {
>>   include adminuser
>>   include mailserver
>>   include webserver
>> }
>>
>>
>> I guess I'm missing something here, or I'm using it wrong. 
>> Your help is highly appreciated, 
>>
>
>  In this simple case no, but think of a vinn diagram with overlapping 
> groups (such as user belonging to dbadmin/webadmin and two different teams 
> of dbadmin webadmin). You can easily realize virtual resource by tags, but 
> not so easy by splitting to class dbadmin/webadmin/db_and_webadmin ...
>
> HTH,
>
> Nan
>

Do you mean something like this?

> cat $modulesdir/virtual/manifests/init.pp
class virtual {
  @user { ['a', 'b', 'c', 'd']: ensure => present }
}

> cat $modulesdir/mailserver/manifests/init.pp
class mailserver {
  realize(User['a'], User['b'], User['c'])
  # some more mailserver stuff...
}

> cat $modulesdir/webserver/manifests/init.pp
class webserver {
  realize(User['b'], User['c'], User['d'])
  # some more webserver stuff...
}

> cat $manifestsdir/nodes.pp
node /<somenode>/ {
  include virtual
  include mailserver
  include webserver
}

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to