IIS Module: Why Use Define Type with a large number of EXEC resources instead of making them Properties in the Type/Provider?
Forge Module in question: https://forge.puppet.com/puppet/iis
It appears to be accepted wisdom that this forge Module has abstracted out many of the 'properties' that can be configured by the Type/Provider for the custom type 'IIS_Pool', and instead has configured them to be managed with a very large number of EXEC resources in a Define Type. I would like to understand why this is the preferred method for managing those properties.
During the Puppet Fundamentals training it was stressed that EXEC resources are generally clunky and should be avoided when possible.
I have had this module working on a server hosting ~20 applications, and a Puppet run would take a upwards of 15 minutes to run, just to decide that nothing needed changing.. I managed to bring this down a bit by improving the 'unless' checks on the EXEC's, however it was still very cumbersome. Implementing them as Properties in the type/provider just seems the better approach. Is there something that I am missing here?
Clarification: though I'm referencing a specific Module here, my question is more about why you would choose to do this with any module. This particular one just happens to be a good example, with a high number of users and is also 'approved' status.