On Friday, June 8, 2018 at 4:55:09 PM UTC-5, Priyo Phan wrote:
>
> I am configuring logrotate and was wondering if i can inherit parameters , 
> my common.yaml is given below :- 
>
> classes:
>   - logrotate
> logrotate::hieramerge: true
> logrotate::rules:
>   syslog:
>     path:
>       - '/var/log/messages'
>     compress: true
>     compresscmd: '/usr/bin/gzip'
>     uncompresscmd: '/usr/bin/gunzip'
>   application:
>     path:
>       - '/var/log/application'
>     compress: true
>     compresscmd: '/usr/bin/gzip'
>     uncompresscmd: '/usr/bin/gunzip'
>
>
> Every time I have to put compress* and uncompress , is there a way whre i 
> can inherit those from a parent .
>


Supposing that your common.yaml is the lowest level of your hierarchy, as 
is conventional, there is no lower level from which to obtain parameters.  
Moreover, neither the data you are expressing nor the resources you are 
declaring based on them have a "parent" in any applicable sense.

However, taking a higher-level view, I suspect that what you're after is 
not so much mechanism but result: you want to declare a compresscmd and an 
uncompresscmd value once each, and have them apply to all logrotate::rules.  
There are several viable alternatives if you are in control of the class 
that declares those resources, but I'm guessing that in your case, the 
resources are declared by a class from a third-party module (maybe 
puppet-logrotate <https://forge.puppet.com/puppet/logrotate>), which you 
therefore do not want to modify.

Supposing that the data are being used as resource parameters, however, at 
least two viable approaches still remain: resource defaults and resource 
overrides.  If they work for you (and there are reasons why they might not) 
then top-scope resource defaults would be my choice.  Here's how that might 
look:

*environments/myenvironment/data/**common.yaml*:
---
classes:
  - logrotate
logrotate_rule_defaults:
  compresscmd: '/usr/bin/gzip'
  uncompresscmd: '/usr/bin/gunzip'
  
logrotate::hieramerge: true
logrotate::rules:
  syslog:
    path:
      - '/var/log/messages'
    compress: true
  application:
    path:
      - '/var/log/application'
    compress: true

*environments/myenvironment/manifests/logrotate_defaults.pp*:
Logrotate::Rule {
  * => lookup('logrotate_rule_defaults', 'Hash', 'priority', {})
}

That sets default values for the properties of resources of type 
logrotate::rule, and because it appears at top scope, it will apply to all 
logrotate::rule instances declared anywhere in your manifest set.

You should check, however, whether the module you're using already has a 
provision for this.  If you do happen to be using puppet-logrotate in 
particular, for instance, then you should look into its `logrotate::conf` 
resource type, which is supposed to serve this purpose.


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/58c6b415-ad28-467d-b1bf-734259297036%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to