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.
--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To post to this group, send email to puppet...@googlegroups.com.
To unsubscribe from this group, send email to puppet-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
You can't override define definition, but you certainly can still
override define resources. So the first thing is you should do is to
have source as part of the parameter.
define basefiles::conf(
$mode = '0644',
$source = "puppet:///modules/${caller_module_name}/${name}"
){
file { "${name}":
source =>$source,
mode => $mode,
}
}
Now you can certainly write a class that can be inherited and overritten:
class myfiles {
basefiles::conf { '/etc/passwd': }
}
class myfiles::sub inherits myfiles {
Basefiles::Conf['/etc/passwd'] {
source => 'something new',
}
}
But the following would probably be more flexible, either hard code a hierarchy:
define basefiles::conf(
$mode = '0644',
$source = ["puppet:///modules/${caller_module_name}/${hostname}/${name}",
"puppet:///modules/${caller_module_name}/${name}"]
){
file { "${name}":
source =>$source,
mode => $mode,
}
}
Or just use hiera function (see our recent blog posts):
define basefiles::conf(
$mode = '0644',
$source = hiera($name, "puppet:///modules/${caller_module_name}/${name}")
){
file { "${name}":
source =>$source,
mode => $mode,
}
}
HTH,
Nan