On Wednesday, October 29, 2014 8:48:56 AM UTC-5, JonY wrote:
>
> Is it (reasonably) feasible to add new resource types? I don't want to 
> disassemble the whole code base but if there is a known path to this I'd 
> like to read about it.
>


Yes.

   1. Defined types 
   
<https://docs.puppetlabs.com/puppet/latest/reference/lang_defined_types.html> 
   are resource types.  If you have a Puppet manifest set of any significant 
   size then you are probably using these already.
   2. You can write your own plugin / native / Ruby resource types, too.  
   There is official documentation 
   <https://docs.puppetlabs.com/guides/complete_resource_example.html> for 
   how to do this, and there are plenty of examples -- many in Puppet's own 
   code, and some in publicly available modules.
   

> Some thoughts:It strikes me that there are at a few situations that I run 
> into with this SW that would make for decent additions. 
>
> 1. "once": do a given resource type once and set a fact to not repeat it. 
> I keep kludging solutions to this. 
>


I could imagine a defined type wrapper that would help you do that.

 

> 2. "log": set a log level and location for a resource / node / etc. This 
> would help to figure out "WTF is going on".
>


Likewise here, more or less, but I'm inclined to think that it would be 
easier to just use a collector to override selected resources' loglevels.  
Nodes don't have loglevels, though, so you can't do it at that scope by any 
means.

 

> 3. "return value": set a fact with the failure code for a given operation 
> or agent run. I keep finding cases where the agent is failing and the 
> server isn't logging it. It isn't until I log in and run the agent that I 
> see the error(s).
>


You could write custom facts that extract failure codes for selected prior 
operations from the system logs.  That doesn't require a resource.  
Resources don't have a sense of a "return code", however, nor any 
consistent hooks into the operations performed by their providers, so a 
*generic* mechanism to capture and record such information directly from 
resources does not sound feasible to me.

 

> 4. "counter": set a fact with the # of times a given operation has been 
> performed on a system. This would help to track down systems that are 
> thrashing because of competing operations.
>
>

Puppet already provides per-run reports describing which resources were 
modified, if you configure it to do so.  It does not have much of a generic 
sense of finer-grained "operations".

 

>
> These could either be additional params for existing resources or an outer 
> layer to same.
>
>

If you are inclined to use a custom-modified version of Puppet then you can 
do pretty much anything.  Some things you suggest doing will require a lot 
more work than others, however, and you may run into issues with 
third-party modules (unless you hack those, too).  Puppet already provides 
alternatives for most of the things you described, and if it were me, I 
would not entertain the possibility of hacking up Puppet itself.


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/d4a2056f-8c46-47e5-bed9-e44260f59de5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to