Resource defaults may help you. If you create a default file resource : File{ owner => root, group => root, mode => 644, }
The file resources in the class will assume these defaults unless their own definition specifies otherwise. For large numbers of resources of the same type there is also a more concise declaration style : file { /etc/passwd: source => 'puppet:///someplace '; /etc/other: mode => 400, source => 'puppet:///someplace/else'; } Combining these two should be a relatively efficient way of getting there. On Feb 19, 2012 6:12 AM, "Marc DiBlasi" <marc.dibl...@gmail.com> wrote: > I have a couple pointers that may help you. > > - The default user and group is root. > - You can set type defaults like this: File { user => "root", group => > "root"} and if you put this in a class, it only applies to the class. > If you put it in site.pp, it applies globally. > - You can define multiple resources in the same declaration separated > by a semi-colon. i.e. file { "/etc/passwd": source => "..."; "/etc/ > group": source => "..."} > > Hopefully these allow you to speed things up a bit. > > On Feb 19, 12:43 am, David <dnblankedel...@gmail.com> wrote: > > Hi- > > > > Being relatively new to the language, I find myself in a situation where > it > > seems like there must be an elegant way to handle this situation using > the > > DSL, but I'm not really certain what it could be. > > > > I'm trying to describe a configuration that contains 20-30 or so file { } > > resources, all with the same attributes except for their mode and > source. I > > could write them all out explicitly like this: > > > > file { '/etc/passwd': > > uid => root, > > gid => root, > > mode => 0644, > > source => 'puppet:///modulename/etc/passwd',} > > > > ... > > file { '/var/lib/someotherfile': > > uid => root, > > gid => root, > > mode => 0400, > > source => 'puppet:///modulename/var/lib/someotherfile', > > > > } > > > > but that seems unnecessarily repetitive. I originally started down the > path > > of writing something like this (ignore the difference in the mode > attribute > > for a moment): > > > > file { [ '/etc/passwd', ... , '/var/lib/someotherfile' ]: > > uid => root, > > gid => root, > > mode => 0400, > > source => "puppet:///modules/modulename/${title}", > > > > } > > > > but this bug:http://projects.puppetlabs.com/issues/5259 > > and this mailing list discussion: > https://groups.google.com/d/topic/puppet-users/bj_uPi_WxC4/discussion > > > > helped me understand that that attempting to reference the title > attribute > > (the file's namevar) would never work and I would have to use a defined > > resource instead. Taking Nan's advice in that thread, I then wrote: > > > > define basefiles::conf($mode){ > > $serversource = 'puppet:///modules/modulename' > > > > file { "${name}": > > source =>"${serversource}/${name}", > > owner => root, > > group => root, > > mode => "${mode}" > > } > > > > } > > > > basefiles::conf { '/etc/passwd:' mode => 0644 } > > ... > > basefiles::conf { '/var/lib/otherfile:' mode => 0400 } > > > > .... and that's all groovy. The manifest looks concise and readable. > > > > But here's where I stare at a tree and get lost in the forrest: the > > manifest I'm writing contains my base list of files. On some of my > > machines, I will want to override that base and substitute a different > copy > > of one or two files from that list (e.g. I will want a different > > /etc/passwd put in place). > > > > Further research leads me to this discussion of overriding defined > > resources and the futility of trying: > > > > https://groups.google.com/d/topic/puppet-users/SDa1F817UBA/discussion > > > > That discussion leads me to believe it isn't possible to override defined > > resources in the same way you might with a class. That makes me think I > > have to either: > > a) move the files I might want to override out to their own separate > > class or > > b) add some logic to the resource definition to do something magical > for > > certain invocations > > > > Both of these options seem icky to me because it means the base module > has > > to be coded in such a way that it has some specific knowledge about when > > and how it might be overridden. That feels like bad coding mojo to me. > > > > So, is there a concise way to describe a collection of file resources, > yet > > be able to override parts of that collection definition in an equally > > elegant fashion? My instinct says there must be (and it is probably > > palm-meets-forehead simple), but I can't seem to determine what that > might > > be. Thanks for any help you can offer! > > > > -- dNb > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscr...@googlegroups.com. > 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 puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.