Rapid iteration implementation, automation and feedback loops take a toll on system administrators but are crucial for DevOps. And Windows teams aren't about to get left behind.
DevOps is tool-agnostic, but tools are central to DevOps success. Especially for Windows environments, select operations tools are needed to effectively manage an infrastructure that incorporates various cloud-based deployments, microservices, virtualization and containers, BYOD and other technologies. As you research a transition to DevOps for Windows IT, you'll find various tools that each lean toward either the Microsoft or open source camp.
The DevOps tools covered here, although appropriate for a range of OSes and cloud environments, were primarily designed with Windows in mind. These three tools to incorporate DevOps for Windows or primarily Windows IT shops add rapid iteration, automation and feedback loops into operations.
Octopus Deploy for continuous delivery
Octopus Deploy is an automated deployment and release management service that administrators use to automate deployment of ASP.NET applications, databases and Windows services. The tool uses a package-based approach: A continuous integration server breaks down an application into small, independent packages and then deploys the code to specified servers after successful testing. Administrators run custom Microsoft Windows PowerShell scripts to configure specific settings during deployment. Octopus Deploy is a process-specific tool that is mostly used by release engineers. It is licensed on a per-server model.
An API approach accesses any resource using the command-line interface or the NuGet package. So-called Octopus tentacles access the server using any port. This Windows DevOps tool supports blue/green deployments, which is ideal to manage external-facing websites. Octopus Deploy performs event logging by default and offers a centralized view of all servers at any time. NuGet HTTPS adds security. Octopus Deploy is only a web client. As of version 4, the tool is only available in a paid model, but the price is low compared to enterprise deployment tools. Octopus, with a scaling model, is worth the price to enable DevOps for Windows teams.
Azure DevOps for version control
When a team of developers works on a project, they collaborate to version code, create elements of the code, manage the releases and remove bugs. Large enterprises need a comprehensive Version control tool that provides a set of services to manage the entire development process. Microsoft Azure DevOps for version control is designed for version control in large groups. Azure DevOps for version control is a cloud-based alternative to Microsoft's Team Foundation Server, a similar tool that users must install and manage. Developers across various teams -- even located in different geographical locations -- can work simultaneously on a single project. Anyone with Microsoft credentials can create a new Azure DevOps for version control account. Service is free for up to four members, after which price is determined per member. For small teams, Azure DevOps for version control comes at no or low cost. You only pay for the resources used.
Version control is available in two modes from these cloud and on-premises Windows DevOps tools. The first one is Team Foundation Version Control, a central repository wherein every developer can store code in a communal server. The second one is a local Git repository wherein each developer can locally store code and commit it when required. Azure DevOps for version control enables admins to work with multiple builds, each of which uses an automation trigger to execute. Admins automatically deploy these builds to any destination server or cloud service.
With a range of built-in tools, Azure DevOps for version control enables DevOps teams to quickly create and deploy applications on a number of platforms without any downloads or configuration settings. Work Item Tracking Service tracks abstract entities over a period of time. Load Testing Services can run a number of load tests that don't require much admin configuration and can simulate 2.5 million global users. Azure DevOps for version control offers Application Insights to monitor application performance and resource usage. This feature tracks which apps are in use and how much resources they consume.
Editor's note: Microsoft initiated an acquisition of GitHub, a version control tool closely associated with the open source community, in June 2018. Microsoft Azure DevOps has evolved through other names: Visual Studio Team Services and Visual Studio Online.
PowerShell DSC for automation
Microsoft offers PowerShell Desired State Configuration (DSC) as a configuration management and automation tool for DevOps to enable consistent change control. PowerShell DSC is the only DevOps tool for Windows primarily; other configuration management options from Puppet, Chef and other vendors were developed for Linux environments. PowerShell DSC manages Windows environments along with Linux ones. Its main advantage is the ability to provision VMs on the go. As part of Microsoft's product offering, PowerShell DSC uses the xHyper-V module to create and manage VMs with virtual disks and networks. The user can also provision loads on these VMs from xActiveDirectory, xSQLServer, xAzure and many other resources.
PowerShell DSC maintains a system in compliance with predefined standards; this is called the desired state. The tool reverts any changes, alerts the team members who should know about an attempted change and logs the situation. All changes are recorded in the Event log file.