Declare the same resource with different parameters

Skip to first unread message


Aug 16, 2012, 11:41:12 AM8/16/12
Hi all,

I'm developing  my own module, and i want to declare same resources in different class like this :

This resource is used to configure my Jboss server by copying conf files in /myappbase/applis/conf
class srhjboss::config::applis {
file { "/myappbase/applis/conf":
ensure => directory,
notify => Class['srhjboss::service'],
recurse => true,
source => 'puppet:///modules/srhjboss/communs',

The second class and resource is used to deploy the conf file of my war application like this :

class srhdeployit::war {
file { "/myappbase/applis/conf"':
ensure => present,
source => "puppet://puppet/srnrepo/myappname",
recurse => true,

then i include the class in the node

node default {
   include srhjboss::config::applis
   include srhdeployit::war

I got the exact failure : 

err: Failed to apply catalog: Cannot alias File[ ' ' ] to ["/sirhen/applis/conf"] at /etc/puppet/modules/srhjboss/manifests/config/applis.pp:47; resource ["File", "/sirhen/applis/conf"] already declared at /etc/puppet/modules/srhdeployit/manifests/war.pp:44

Do you have suggestions on how to do it?


Christopher Wood

Aug 16, 2012, 11:50:03 AM8/16/12
Short version: use a define.

But did you mean to have unbalanced quotes here? There's an extra single quote.

file { "/myappbase/applis/conf"':

Regardless of whether you use a define or a class, you can't define the same file resource twice.

In the first resource, this:


Will end up with the contents of:


And in the second one, it will end up with these contents:


You'll have to pick one per node.
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To view this discussion on the web visit
> [1]
> To post to this group, send email to
> To unsubscribe from this group, send email to
> For more options, visit this group at
> References
> Visible links
> 1.


Aug 16, 2012, 12:00:34 PM8/16/12
Yes I want to fill  /myappbase/applis/conf with the content of twice sources, but in different class.


Aug 17, 2012, 9:29:00 AM8/17/12

As Christopher explained, you cannot declare the same resource twice on the same node, as it is internally inconsistent.  You give Puppet conflicting information about the properties of the resource, so which is it supposed to apply?

Supposing that none of the files provided by class 'srhdeployit::war' replace files provided by class 'srhjboss::config::applis', you should be able to solve the problem by using separate File resources for each file or directory that the former wants to manage.  Note also that it looks like you probably need a 'requires' parameter on the 'srhdeployit::war' file(s).


Reply all
Reply to author
0 new messages