----- Original Message ----- > From: "R. I. Pienaar" <[email protected]> > To: "puppet-dev" <[email protected]> > Sent: Thursday, 3 March, 2016 09:58:42 > Subject: Re: [Puppet-dev] metaparam question
> ----- Original Message ----- >> From: "Erik Dalén" <[email protected]> >> To: "puppet-dev" <[email protected]> >> Sent: Thursday, 3 March, 2016 09:43:30 >> Subject: Re: [Puppet-dev] metaparam question > >> On Fri, 5 Feb 2016 at 00:35 Kylo Ginsberg <[email protected]> wrote: >> >>> On Wed, Feb 3, 2016 at 7:47 AM, R.I.Pienaar <[email protected]> wrote: >>> >>>> hello, >>>> >>>> I would like to add a metaparameter - which I think is easy now via >>>> Type.newmetaparam. >>>> >>> >>> We haven't been thinking of metaparameters as a general purpose extension >>> point. This came up once before that I know of, about a year ago, and >>> there's a little discussion of this in >>> https://tickets.puppetlabs.com/browse/PUP-4281. The conclusion we reached >>> at the time was, more or less, to explore whether the desired change could >>> be accomplished with a puppet function and/or a change to core puppet. >>> >>> >>>> >>>> The thing that I can't seem to find any example of though is how to >>>> make this metaparameter do something on the nodes for all providers >>>> or all types. >>> >>> >>>> Imagine there's a metaparam that might describe how to test a resource >>>> works, something like: >>>> >>>> service{"httpd": validate => "check_http --port 80 -H localhost"} >>>> >>>> I'd then want to have some code that would be run on the agent nodes >>>> for any resource that has this param set. >>>> >>> >>> I don't think something like this exists per se, but 'validate' might be >>> one such example of something worth adding to core puppet. Fwiw, one >>> resource-specific example added not too long ago is the file type's >>> validate_cmd: >>> >>> >>> https://docs.puppetlabs.com/puppet/latest/reference/type.html#file-attribute-validate_cmd >>> . >>> >>> >> Just to clarify, validate_cmd works differently in that it validates the >> new contents before replacing the file. >> I guess the generic validate metaparameter would validate the resource >> after it has been synced. > > yes indeed, subtle but important. thanks Late to follow up on this but I had some time to work on this again, service{"http": ensure => "running", post_validate => "/usr/lib64/nagios/plugins/check_http -H localhost" } This works with the code below and I included a basic thingy that tells sensu about this I had to hack around a bit more than simply adding a metaparam since I had to wait for puppet to completely finish with the resource and then do a final check after it's done https://github.com/ripienaar/puppet/commit/a6c659cc3fb3555632bfe94df1411878a04fdc51 This is really nice, it both makes my Puppet runs a bit better and allows me to get instant visibility of failures - and configurable notifications based on sensu. It works with any kind of resource. Ideally the sensu notifier would be something a module can provide and you could register multiple event handlers but Henrik says the bindings system isn't initialized on the agent side at present and I didn't have time to hack around with that. -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/157346444.508343.1462127599948.JavaMail.zimbra%40devco.net. For more options, visit https://groups.google.com/d/optout.
