I help manage environments for an application that uses cloud-based Windows server VMs. The application stack consists of Windows Server 2008 and Windows Server 2012, SQL Server 2008, IIS, and SharePoint 2010. I have several environments Dev/Test/Stage/Prod. I am looking for a way to do configuration management of those environments to make sure any environmental changes are applied in a consisent way and there is a way to verify that no changes have been made to one environment that have not been made to other environments.
I have been reading up on Puppet, Chef, etc and I like the idea of doing delcarative configuration management. What is a good method or tool to use to help manage the configuration of these environments. I know a little about SCCM but it is too expensive for this particular situation although I would still be interested in knowing if it has the capabiltiy to do those things.