Deployment–DSC Resources for System Center Deployment

Readers of this blog are familiar with the PowerShell Deployment Toolkit (PDT), which was developed to solve the problem of complex long running distributed deployment, primarily of the components used to manage the fabric of a private cloud i.e. Windows Server, System Center, and Windows Azure Pack, as well as related components required to support those products such as SQL Server.  PDT was originally developed in 2012, when the choice of technologies with which to solve the problem was more limited than it is today – so PDT created a custom distributed deployment engine using PowerShell and XML, and used the Windows Task Scheduler for remote execution.  PDT has proven to be very successful, has been download over 13,000 times, and is used by many organizations of all sizes including services organizations and service providers.  These deployments include demo environments, labs, and very large distributed deployments.

However, this is the world of technology and the options available today to perform this task are significantly more advanced than they were in 2012.  Specifically, PowerShell Desired State Configuration (DSC), first available as part of Windows Server 2012 R2 and Windows Management Framework 4 (WMF4) is Microsoft’s strategic platform for configuration management.  There is a wealth of information available in this blog and elsewhere on DSC, so I won’t repeat that here – but if you need a primer, a great place to start is Michael Greene’s excellent blog post “Desired State Configuration Blog Series – Part 1, Information about DSC”.  The WMF4 version of DSC lacked one important capability to realistically start to use it for tasks similar to how PDT is used – and that is the ability to coordinate dependencies across different machines.  WMF5, currently available in preview, very nicely delivers that capability with a set of new resources – WaitForOne, WaitForSome, WaitForAll.  These resources allow a DSC configuration to wait for up to a configurable time for a resource on a different machine to be in the desired state, which is ideally suited to meet the requirements of a distributed deployment.  You can download the WMF5 September Preview here.

In today’s DSC Resource Kit Wave 8 release, there are a new set of experimental resources xSQLServer, xSCVMM, xSCSPF, xSCSMA, xSCSR, xSCOM, and xSCDPM.  These are DSC resources for deployment of many of the System Center components and roles – both the currently released System Center 2012 R2 version on Windows Server 2012 R2 and System Center Technical Preview on Windows Server Technical Preview.  Each includes examples of deployments of individual components, including single server and multi-machine deployments.  The resources themselves work with WMF4, however the examples use the WaitForAll resource and so require WMF5.  This is by no means a complete solution yet – there are other System Center and related components that are not covered, and cross-component integration and configuration are not yet covered – but they do demonstrate the approach and the incredible power of the DSC platform when applied to these types of tasks.  DSC Resource Kit Wave 8 is available here.

I am very interested in feedback on these resources – rather than comment on this post, please provide feedback against the DSC Resource Kit and its associated TechNet pages.

This does not mean the end of PDT – the current released toolkit is being maintained by a group inside Microsoft that actively use the tool to enable deployments of Windows Server 2012 R2, System Center 2012 R2, and Windows Azure Pack.  There will be an update to the current download of PDT soon to update some of the download links and prerequisite component versions that have changed since the last update.