Welcome to the MIMDSC wiki!
What is Desired State Configuration (DSC)?
DSC is a system that enables the separation of configuration (the what) from the code that enacts that configuration (the how); the result is an elegant way of declaring configuration without code, leaving the code to the job of testing and enacting that configuration.
Can I use DSC to install Windows/SQL/SharePoint/MIM?
Yes, DSC does that very well and I have some GitHub Gists showing how to do some of it but that is not the focus on this repository.
Why use DSC for MIM?
Even the simplest MIM deployments can be challenging when the state of the system is not well understood.
"Hmm, MIM ran great last week but now it's all weird and complicated. I wonder if Joey messed with attribute flow precedence, man I wish I knew what attribute flow precedence was supposed to be. That consultant set it up for me and gave me a nice document but my dog ate it. I wish there was a way to know if something changed in my MIM configuration."
DSC can make a MIM deployment more reliable by keeping it in the desired state, or at least informing when MIM drifts from the desired state.
How does DSC work for MIM?
DSC takes a DSC configuration as input, then uses DSC resources to test that each item in the configuration is in the desired state. If that test fails then the DSC resource can repair the item, taking action to get the item into the desired state. If you enjoy the state-based nature of the MIM Synchronization Service then you are likely to enjoy learning DSC. The MIM DSC modules have DSC resources to cover configuration items for the MIM Service and MIM Synchronization Service.
Examples of configuration items in the MIM Service include:
- Management Policy Rule
- Workflow Definition
Examples of configuration items in the MIM Sync Service include:
- Run Profile
- Filter Rules
- Import Attribute Flow Rules
- Export Attribute Flow Rules
- Metaverse Attribute Precedence Each of the DSC resources needs to know how to compare the actual configuration to the desired configuration (the Test) then if necessary take action to get the item back to the desired configuration (the Set).
How do I create a DSC configuration for MIM?
DSC configurations can be written by hand (see the wiki and tests for examples) but it is quite tedious and I do not expect anybody to have the patience for it. The easier path is to generate a DSC configuration from a running MIM system.
[TODO] - ability to generate a DSC configuration from a running MIM system