I had a great time so here they are…

The Demo

While the core of our session focused on the scenarios that PowerShell V3 enables, our principal demo was around configuration management.  We started with a running domain controller and a base VHD.  From there, we provisioned two web servers with a call to Assert-VM.  When the two web servers were ready, we deployed our website with Assert-Website.  

Behind the Scenes

The scenario highlights the power that declarative configuration management holds.  Providing configuration variables in script files leaves an artifact that can be version controlled, providing a safety net for changes and allowing all versions of the environment to be replicated.

By breaking the configuration into an environmental and a structural component, we isolate where changes need to be made, minimizing the places data needs to be changed, and as we learned early in the presentation, changes are a major driver of failures.

The second major concept demonstrated the is idempotent operations.  Idempotent operations mean that the command can run time and time again, and the only result will be the direct effect of the command, with no additional side effects.  Writing functions to act in an idempotent manner allow us the freedom to run the command as often as we would like without fear that our production environment would be impacted.  This allows us to make changes to some configuration items and re-run the whole configuration script.  Our existing configuration would be validated and the changes then applied.

If you are responsible for server configuration, it’d be to your benefit to check into configuration management systems like this (e.g. Chef, Puppet, and CFEngine amongst others) and how you can leverage these techniques in your build and deploy process.