Hi puppet wranglers,
We're trying to refactor the WMF puppet manifests to get rid of reliance on dynamic scope, since puppet 3 doesn't permit it. Until now we've done what is surely pretty standard pupet 2.x practice: assign values to a variable in the node definition and pick it up in the class from there dynamically. Example: we set $openstack_version to a specific version depending on the node, and the nova and openstack classes do different things depending on that value.
Without dynamic scoping that's no longer possible, so I'm wondering what people are doing in the real world to address this, and what best practices are, if any. Hiera? Some sort of class parameterization? Something else?
It should go without saying that we'd like not to have to massively rewrite all our manifests, if possible.
Thanks,
Ariel Glenn