I'm currently looking to engineer development, QA, and staging environments from scratch. Two reasons: better PCI compliance and improved developer experience
I want to use a configuration management-slash-containerized/cloud approach so that developers can stand up our entire platform on their local machine (or in the cloud...without the help of IT) and the same process can be used to configure and deploy to QA, prod--on premise or in the cloud.
There are a lot of technologies in use that claim to accomplish some of these goals. I would like to put together a solution that would accomplish all of this with fairly mature/stable technologies.
I have been looking at:
Vagrant
Consul
Docker
Chef/Puppet/Pallet
Ansible
Powershell/Azure
I want to build configurations for VMs or containers that are created during the application's build process that change based on environment. I would like to be able to create a script that can deploy all of these to a single machine, or just a few machines (VMs) if necessary, so that developers can run a script and have a clean version of our entire platform for local development/deployment/testing. Another aim is to have a script stand up our entire environment for disaster recovery purposes as well.
This is a Windows .NET shop that is not tied to legacy versions.
Any suggestions/case studies/opinions are appreciated.