$$$ Idea BusinessDevelopmentOperations codeProduct
Design CodeTest Check-in
Design Code + Config Test Check-in Deploy
Declarative management Configuration data Simplicity Resource reusability Automation releases Velocity Push/Pull deployments Integrated Azure Extension Engine settings Flexibility
Test Environment Data Prod Environment Data Execute Tests
Traditional Scripts (Imperative) Configuration (Declarative)
Intent Logging & Error Handling Reboot Resiliency Technology Specific Dependency Resolution Repeatable Automation DSC Engine Dependency Resolution Logging & Error Handling Reboot Resiliency Repeatable Automation Resources Technology Specific ConfigurationIntent Traditional Scripts DSC
DSC Engine Dependency Resolution Logging & Error Handling Reboot Resiliency Repeatable Automation Resources Technology Specific ConfigurationIntent Make It So HOW HOW : DSC Resources Do the heavy lifting in an idempotent way Intent WHAT WHAT : Structural Configuration Stays same irrespective of the environment WHERE WHERE : Environmental Configuration Changes as system goes through different env. Dev Test Production
xPhpProvision xRemoteFiles Configuration xRemoteFiles { … } Configuration xPhpProvision { … }
Wave 0 Archive Environement File Group Log Package Registry Script Service User WindowsFeature WindowsProcess Wave 1 xComputer xDNSServerAddress xDscWebService xIPAddress xVHD xVMHyperV xVMSwitch xWebsite
Configuration Staging Area (Contains DSC data) Configuration Staging Area (Contains DSC data) 3 rd party languages and tools Authoring Phase (May include imperative as well as declarative code) Staging Phase -Fully declarative configuration representation using DMTF standard MOF instances -Configuration is calculated for all nodes PowerShell “Make it So” Phase (Declarative configuration is reified through imperative providers.) Parser and Dispatcher Resources When authoring in PowerShell: Declarative syntax extensions Schema-driven Intellisense Schema validation (early-binding) Resources implement changes: Monotonic Imperative Idempotent Local Configuration Store
Configuration Staging Area (Contains DSC data) Configuration Staging Area (Contains DSC data) 3 rd party languages and tools Authoring Phase (May include imperative as well as declarative code) Staging Phase -Fully declarative configuration representation using DMTF standard MOF instances -Configuration is calculated for all nodes PowerShell “Make it So” Phase (Declarative configuration is reified through imperative providers.) Parser and Dispatcher Resources When authoring in PowerShell: Declarative syntax extensions Schema-driven Intellisense Schema validation (early-binding) Resources implement changes: Monotonic Imperative Idempotent Local Configuration Store
3 rd party languages and tools Authoring Phase (May include imperative as well as declarative code) Staging Phase -Fully declarative configuration representation using DMTF standard MOF instances -Configuration is calculated for all nodes PowerShell “Make it So” Phase (Declarative configuration is reified through imperative providers.) Parser and Dispatcher Resources When authoring in PowerShell: Declarative syntax extensions Schema-driven Intellisense Schema validation (early-binding) Resources implement changes: Monotonic Imperative Idempotent Local Configuration Store
PS DSC Extension point DSC is the built-in configuration platform for Microsoft
Continuous deployment tooling utilizing Azure and DSC Such as Visual Studio, Brewmaster, etc. Azure Manage Environment VMs Drives Etc. Json / xml DSC Manage Guest Web Application Operating system Etc. PowerShell and MOF
Template Repo Step 1. Pull Template Step 2. Parse Template for Params Step 3. Validate and Combine Params + Template
Step 4. Provision Azure Resources by Deployment Group Affinity Group
Step 5. Bootstrap each VM with DSC, Remoting, etc. Affinity Group
Step 6. Pull Package from Git repo into each node Affinity Group Template Repo
Affinity Group Step 7. Dynamically generate DSC config and push to nodes
Step 8. Poll DSC operations and report progress Affinity Group
Heterogeneous DSC allows you to manage Linux and Windows configuration with common DSC infrastructure and syntax! Standards DSC for Linux implemented the LCM (an OMI Provider) and Linux Resource Providers (Python) Resources Set of “Built-In” Resource Providers for Linux: file, User, Group, Service, Script + more Download now Open-source CTP release at
Declarative management Configuration data Simplicity Resource reusability Automation releases Velocity Push/Pull deployments Integrated Azure Extension Engine settings Flexibility