----- Original Message -----
> From: "R. I. Pienaar" <r...@devco.net>
> To: "puppet-dev" <puppet-dev@googlegroups.com>
> Sent: Thursday, 3 March, 2016 09:58:42
> Subject: Re: [Puppet-dev] metaparam question

> ----- Original Message -----
>> From: "Erik Dalén" <erik.gustav.da...@gmail.com>
>> To: "puppet-dev" <puppet-dev@googlegroups.com>
>> Sent: Thursday, 3 March, 2016 09:43:30
>> Subject: Re: [Puppet-dev] metaparam question
> 
>> On Fri, 5 Feb 2016 at 00:35 Kylo Ginsberg <k...@puppetlabs.com> wrote:
>> 
>>> On Wed, Feb 3, 2016 at 7:47 AM, R.I.Pienaar <r...@devco.net> 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 puppet-dev+unsubscr...@googlegroups.com.
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.

Reply via email to