Automating the world one-liner at a time…
Good news everyone! Starting today, you can use Windows PowerShell Desired State Configuration (DSC) to configure Active Directory and SQL Server (including High Availability Groups). We are pleased to release the next wave of the DSC Resource Kit – one that enables you to start using DSC to solve your real world problems and scenarios.
When we shipped DSC in Windows Server 2012 R2, we shipped a platform with great infrastructure for configuration. The next step for any platform like DSC is the creation of resources to make it immediately usable in significant real world scenarios. With the resources we shipped in box, configuring SQL Server was out of reach for most of our customers. That's changing today. Now is the time to create a vibrant ecosystem and expansive community.
Over the past few months, we've worked hard to kick start this community. Last month, we released the first wave of the DSC Resource Kit. That release contained six experimental DSC resources, enabling you to configure IIS websites and Hyper-V. Those were a limited subset of resources – a first pass at the process. Now, we’re ready to turn it up a notch.
This wave of the DSC Resource Kit includes fourteen new resources. These resources are all focused on enabling you to configure Active Directory and SQL Server (including High Availability Groups). These are real world scenarios where DSC can make an impact. Soon, we will be blogging an involved example that uses these resources to set up a SQL High Availability Group using DSC. In addition, we’ve updated many of the resources from the initial release, adding features and fixing bugs.
Click here to see the latest DSC Resource Kit modules.
We hope these resources will be a starting point for the DSC community – something to facilitate DSC resource creation. Feel free to take and modify these resources to meet your needs (while following the Renaming Guidelines). We were thrilled to see that several community members created modified versions of last wave’s resources in PowerShell.Org’s GitHub repository. Also, don’t forget that you can create your own resources – for help, check out this blog post and the DSC Resource Designer.
On a more serious note, we must reiterate that these resources come without any guarantees. The “x” prefix stands for experimental – which means these resources are provided AS IS and are not supported through any Microsoft support program or service. We will monitor the TechNet pages, take feedback, and may provide fixes on a “fix forward” basis.
Finally – before diving into the details – we want to invite everyone to give feedback on the DSC Resource Kit. Are you hungry for even more resources? Do you need DSC to enable any important scenarios? Let us know through the comments or TechNet Q&A -- there's definitely more to come.
After installing the modules, you can discover all of the resources available through the Get-DSCResource cmdlet:
Here is a brief description of each resource (for more details on a resource, check out the TechNet pages).
Create and manage an Active Directory Domain
Create and manage an AD Domain Controller
Create and manage an AD User
Pause configuration implementation until the AD Domain is available. Used for cross machine synchronization.
Create and manage a SQL Server Installation.
Create and manage a SQL High Availability Service.
Create and manage the endpoint used to access a SQL High Availability Group.
Create and manage a SQL High Availability Group.
Pause configuration implementation until a SQL HA Group is available. Used for cross machine synchronization.
Create and manage a cluster.
Pause configuration until a cluster is available. Used for cross machine synchronization.
Create and manage a SMB Share.
Create and manage Firewall rules
Manage files to be copied into a Vhd.
Added functionality to xWebsite to support configuration of https websites.
When making changes to these resources, we urge the following practice:
1. Update the following names by replacing MSFT with your company/community name and replacing the “x” with "c" (short for "Community") or another prefix of your choice:
a. Module name (ex: xWebAdministration becomes cWebAdministration)
a. Folder name (ex: MSFT_xWebsite becomes Contoso_cWebsite)
b. Resource Name (ex: MSFT_xWebsite becomes Contoso_cWebsite)
c. Resource Friendly Name (ex: xWebsite becomes cWebsite)
d. MOF class name (ex: MSFT_xWebsite becomes Contoso_cWebsite)
e. Filename for the <resource>.schema.mof (ex: MSFT_xWebsite.schema.mof becomes Contoso_cWebsite.schema.mof)
2. Update module and metadata information in the module manifest
3. Update any configuration that use these resources
We reserve resource and module names without prefixes ("x" or "c") for future use (e.g. "MSFT_WebAdministration" or "Website"). If the next version of Windows Server ships with a "Website" resource, we don't want to break any configurations that use any community modifications. Please keep a prefix such as "c" on all community modifications.
As specified in the license, you may copy or modify this resource as long as they are used on the Windows Platform.
The DSC Resource Kit requires Windows 8.1 or Windows Server 2012 R2 with update KB2883200 (aka the GA Update Rollup). You can check whether it is installed by running the following command:
PS C:\WINDOWS\system32> Get-HotFix -Id KB2883200
Source Description HotFixID InstalledBy InstalledOn
------ ----------- -------- ----------- -----------
NANA-TOUCH Update KB2883200 NANA-TOUCH\Admini... 9/30/2013 12:00:00 AM
On supported down level operating systems, they require WMF 4.0. Refer to these previous blog posts for more information on WMF 4.0 and issues with partial installation.
For simple examples of configurations that use these resources, check out the respective TechNet pages. Soon, we will be blogging an involved example that details the configuration of a SQL High Availability Group using DSC. If you need help deploying the resources, see this blog post.
OK, this may be a daft question but what does 'may provide fixes on a “fix forward” basis' mean?
I've never heard of the phrase "fix forward". I've checked with a couple of colleagues and none of them have heard of it before.
Excited to give some of this a go. We're going to be trialling using DSC for all configuration management as we move to AWS.
When we say that we 'may provide fixes on a "fix forward" basis,' we mean a couple of things:
1. "Fix Forward" means that any fixes or updates to the resources will be put out in the next version of the resource. It will be your responsibility to update to the latest version of the resource (fixes will not be rolled into previous versions of the resource). This is in contrast to items that we ship in Windows, where fixes can be automatically rolled out to all previous versions through Windows Update. Does that make sense?
2. "May provide fixes" means that we do not guarantee that we will support these resources moving forward. When we release items in Windows, there's a very clear support contact. We want to be very clear that that contract doesn't exist with items released through DSC Resource Kit, and that they may not be maintained long term. You are totally free to implement any fixes you need on your own, and you can contribute those fixes to community versions of the resources (e.g. github.com/.../DSC).
Does that make sense? Good luck!
Yes, that makes sense. Thanks for answering the question.
PowerShell DSC configurations do not 'compile' if Strict Mode is set to 1 or 2. Is this going to be looked at?
The SQL Server install resource seems to leave out some configurability options. For instance, I don't see any parameters to specify local administrators on the DB, or the collation type, database .mdf file paths or some of those options.
Would you recommend configuring these options with a script resource after the install completes?