On Monday, September 22, 2014 4:51:38 PM UTC-5, aar...@gmail.com wrote:
>
> I did the following to see if it would work, and I got (for me anyway) a 
> surprising result.  It may be the source of some of my confusion and reason 
> why I'm finding this so difficult.  Note, I don't want to do this this way. 
>  I just did it as an experiment.  
>
> define mac_managed_preferences ($source) {
>   include managed_preferences
>
>   file { "/System/Library/User 
> Template/English.lproj/Library/Preferences/${source}" :
>     source  => "puppet:///modules/${source}/Preferences/",
>     owner   => "root",
>     group   => "wheel",
>     mode    => "600",
>     recurse => "true",
>     }
>
>   exec { "Move Preferences":
>     command => "mv $source/* ../Preferences/",
>     path    => "/bin",
>     cwd     => "/System/Library/User 
> Template/English.lproj/Library/Preferences/",
>     require => File["/System/Library/User 
> Template/English.lproj/Library/Preferences/${source}"],
>    }
>
>   exec { "Delete Folder":
>     command => "rm -rf $source",
>     path    => "/bin/",
>     cwd     => "/System/Library/User 
> Template/English.lproj/Library/Preferences/",
>     require => Exec["Move Preferences"],
>
>   }
> }
>
> Here is the relevant portion of the module that installs the application.
>
>     mac_managed_preferences { "$module_name":
>     source => "$module_name",
>     }
>
>
> I got an error:  Duplicate declaration [Move Preferences] is already 
> declared in file (path to managed_preferences file) cannot redeclare at 
> (path to same file).  In my previous posts I said that I though that I 
> accessed the module multiple times, but declared it once, but this message 
> is making me understand that puppet says I was declaring it multiple times, 
> but I am unsure how.
>


Multiple declaration is not about how many times a resource appears in your 
manifests files; it is about how many times it appears in the *catalog* 
built from the manifests.  Every instance of a defined type added to the 
catalog carries a declaration of each resource declared in the type 
definition's body.  Each declaration of a defined type creates a separate 
instance.  E.g.

# two instances of defined type
# my_module::my_type:
my_module::my_type { 'foo': }
my_module::my_type { 'bar': }

That's why I said earlier that "defined type instances must declare only 
resources that wholly belong to them; they must not not declare shared 
resources".  Let me now augment that by pointing out that any resource that 
is not specific to a defined-type instance cannot wholly belong to that 
instance, at least when multiple instances of the type are declared.


John

-- 
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 puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/664df567-413f-480d-a4de-f01a8d53effe%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to