To live the DevOps dream one of the skills a team must have is the capability to be fast and flexible in the provisioning, configuring and usages of environments.
These environments cover not only test environments but also the complete needed ALM infrastructure and the team member workspace. See this post: Cloud usage flavors for Development and Test teams.
An interesting part of the battle field gives this survey Deployments in .NET 2014/2015 Report
although the list of tools is pretty long it isn’t compete and more are coming almost on a daily base.
Which deployment tool and technology to choose is really hard and often depends on the experience of a team member or the tools the operations department used to use.
Infrastructure as Code
While Deployment technologies is one part of the battle field and other part and even more important is the provisioning and configuring of environments. The Infrastructure as Code technologies.
For example this is a small list of tools which automate the provisioning and configuration of environments.
- PowerShell Desired State Configuration (Microsoft | can do everything on Azure)
- System Center 2012 R2 Orchestrator (Microsoft | common used Onprem)
- Azure Automation Runbook (Microsoft | no code )
- ANSIBLE (provisioning, configuration ad deployment, own language)
- PalletOps (no Azure)
- CFEngine (templating)
- http://puppetlabs.com/ (well known and used)
- https://www.chef.io/chef/ (well known and used)
- https://www.docker.com/ (full deployment )
- Azure Resource Manager ( Microsoft | more than only code and IaaS)
- Brewmaster (template based for Azure environments)
To make all these technologies of provisioning, configuring and deploying valuable it must be done in relation to a release, to customer value.
Release Management tools which support the flow and relate it to functionality, reports and tests are a must for teams. Support of tools which help to integrate the environments and releases in to the complete Application Lifecycle.
Investing leaning time (and money) in the moving target of Provisioning and Configuring (Cloud) environments is a must for every team. As with all investments, it can be a waste of money. When a technology or tool doesn’t take off, or the capabilities aren’t what you expected.
It is for teams often hard to get a grip around what to do, which technology, which tools. My advice: start by asking the operations department (the Ops part of DevOps)is a good start to make a decision.