On Thursday, January 31, 2019 at 8:00:05 AM UTC-6, jcbollinger wrote:
As long as I'm standing on this soapbox, though, I'd like to remark that > ensure_packages() is a jerry-rig, not an actual solution to any Puppet > problem. It and its brethren, ensure_package(), ensure_resources(), and > ensure_resource() should be avoided. > Oops: there is no ensure_package(). But the point remains. As for the code you've presented, it indeed does reveal a problem, which is also illustrative of my soapbox position. One of the larger issues here revolves around what to do when there are two or more declarations of a resource that specify different parameters. The two parameter lists cannot both be satisfied (generally speaking), so which do we choose? In fact, the functions in question make the safe choice: none of the above. Per the docs for ensure_resource() <https://forge.puppet.com/puppetlabs/stdlib#ensure_resource>: If the resource already exists, but does not match the specified > parameters, this function attempts to recreate the resource, leading to a > duplicate resource definition error. In your case, one declaration of Package[libapache2-mod-php7.3] has a notify parameter and the other does not. There are several ways you might refactor this to solve the specific problem, but I would suggest one of these: - moving management of mod_php out of the apache profile - My first inclination would be to put it in its own profile, or at least in its own class, but - you could also leave it as a responsibility of the Wordpress profile - moving management of mod_php out of the Wordpress profile - Again, you could put it in its own class or profile, but - you could also let the Apache profile continue to manage it, possibly under control of a class parameter Of course, you could also just ensure that the specified parameters are identical in both places, but if you're relying on ensure_packages / _resources / _resource a lot, then you will likely find that that becomes tedious and error-prone. 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/b67eecc5-1145-4eff-8d6b-fbf8808236e3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
