People often ask me for advice on designing or delivering training material. One of the most common questions is how you determine the appropriate pace for the training courses or the lab exercises. It's no surprise, that's a tough question. The answer is suprisingly straightforward though.
I ran into yet another explanation of the Monty Hall problem the other day that was rather difficult to follow and it struck me that even though it's a simple problem, I still have not seen an explanation that makes intuitive sense. So here's my take at it.
In case you haven't seen it before, the problem goes a bit like this. You are faced with three doors. Behind one door is a new car and behind the other two doors are goats. Choose a door.
By now in your Puppet career, you've almost certainly been exposed to the phrases declarative state or state modeling. You may even have a pretty good idea of what the words mean. But how in the dickens do they relate to configuration management? The confusion only makes sense. We've been writing shell scripts to provision, configure, and even boot our computer systems for forty years. It's going to take a mighty strong argument to change that habit now.
Something that's been missing in my training classes for a while is a quantitative method for monitoring how well the class was keeping up. Instead, we relied on the ability of each instructor to effectively read the class and adjust pace appropriately. This does work, but it's less consistent than I'd like and it doesn't give me the ability to systematically gather metrics about the knowledge retention of the different training sections.
Clearly, I needed something better.
One of the more common questions I'm asked on #puppet is how to use existing state when applying configuration to a node. For example, "how can I tell when mysql is installed, so I can add a firewall rule for it?" In this post, I'm going to talk a little bit about why I think there's such a draw to this approach, then I'll explain why it's universally such a bad idea, and then I'll talk about better ways of accomplishing the same goals.