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.