• Stars
    star
    202
  • Rank 193,691 (Top 4 %)
  • Language
    PowerShell
  • License
    MIT License
  • Created over 6 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Blueprint for a full featured DSC project for Push / Pull with or without CI/CD

DSC Workshop Overview

Build Status Last Commit
Develop Build status dev GitHub last commit
Master Build status GitHub last commit

GitHub issues

Abstract

This project serves as a blueprint for projects utilizing DSC in a medium or complex scope. It comes with a single build script to create all DSC artifacts for push or pull scenarios with the most flexible and scalable solution to manage configuration data.

This project does not use DSC as an isolated technology. DSC is just one part in a pipeline that leverages a few Microsoft products and open-source.

The is a fast-track learning path in Exercises

Credits

This project is inspired by Gael Colas' DscInfraSample and Gael's opinions have an impact on its evolution.

The overall concept follows The Release Pipeline Model, a whitepaper written by Michael Greene and Steven Murawski that is a must-read and describing itself like this:

There are benefits to be gained when patterns and practices from developer techniques are applied to operations. Notably, a fully automated solution where infrastructure is managed as code and all changes are automatically validated before reaching production. This is a process shift that is recognized among industry innovators. For organizations already leveraging these processes, it should be clear how to leverage Microsoft platforms. For organizations that are new to the topic, it should be clear how to bring this process to your environment and what it means to your organizational culture. This document explains the components of a Release Pipeline for configuration as code, the value to operations, and solutions that are used when designing a new Release Pipeline architecture.

Technical Summary

In the past few years many projects using DSC have not produced the desired output or have even failed. One of the main reasons is the tooling required to automate the process of building the DSC artifacts (MOF, Meta MOF, Compresses Modules) and automated testing is not implemented.

One of the goals of this project is to manage the complexity that comes with DSC. The needs to be proper tooling that solves these issues:

  • Configuration Management must be flexible and scalable. The DSC documentation is technically correct but does not lead people the right way. If one follows Using configuration data in DSC and Separating configuration and environment data, the outcome will be unmanageable if the configuration data gets more complex like dealing with roles, differences between locations and / or environments.. The solution to this problem is Datum, which is described in detail in the Exercises.
  • Building the solution and creating the artifacts requires a Single Build Script. This get very difficult if the build process has any manual steps or preparations that need to be done. After you have done your changes and want to create new artifacts, running the Build.ps1 script. This build script runs locally or inside a release pipeline (tested on Azure DevOps, Azure DevOps Sever, AppVeyor, GitLab).
  • The lack of Dependency Resolution makes it impossible to move a solution from local build to a CI/CD pipeline. Many DSC solutions require downloading a bunch of dependencies prior being able to run the build. This project uses PSDepend to download all required resources from either the PowerShell gallery or your internal repository feed.
  • Automated Testing is essential to verify the integrity of the configuration data. This project uses Pester for this. Additionally, the artifacts must be tested in the development as well as the test environment prior deploying them to them to the production environment. This process should be fully automated as well.

Getting started

Getting into the details does not cost much time and does not require a complex lab infrastructure. You should start with the Exercises - Task 2 on your personal computer. If you need to recap some DSC basics, go to Exercises - Task 1. Later in the exercises a free Azure DevOps account is needed and to finish the last exercises also an Azure Automation account for storing the MOF files.

If you need DSC in an isolated or non-cloud ready environment, all the required components can be installed as a local lab. For that AutomatedLab (AL) is required that handles the deployment of VMs on Azure or Hyper-V. AL also installs all the required software and does the necessary configurations. Deploying the lab takes 3 to 5 hours, is fully automated and includes:

  • Active Directory Domain
  • SQL Server 2017
  • Azure DevOps Server for hosting the code, running the builds and providing NuGet feed to Software (Chocolatey) and PowerShell modules
  • 4 to 8 Azure DevOps Build Agents
  • DSC Pull Server (SQL Server access already configured)
  • Certificate Authority for SSL support and credential encryption
  • Routing Services so all VMs can access the internet

The lab script are in Lab.

Technical Details

  • Configuration management that allows multiple layers of data (psd1 files and hash tables can’t be the solution)
  • Tooling to fully automated the build and release process
  • Dependency resolution
  • Maintenance windows (which the LCM does not support)
  • Reporting (at least if you are using the on-prem pull server)
  • Git branching model
  • Automated testing

YAML Reference Documentation

The YAML reference documentation is located in the ./doc subfolder of the DscConfig.Demo repository.

More Repositories

1

SqlServerDsc

This module contains DSC resources for deployment and configuration of Microsoft SQL Server.
PowerShell
358
star
2

ActiveDirectoryDsc

This module contains DSC resources for deployment and configuration of Active Directory Domain Services.
PowerShell
339
star
3

ComputerManagementDsc

DSC resources for for configuration of a Windows computer. These DSC resources allow you to perform computer management tasks, such as renaming the computer, joining a domain and scheduling tasks as well as configuring items such as virtual memory, event logs, time zones and power settings.
PowerShell
303
star
4

SharePointDsc

The SharePointDsc PowerShell module provides DSC resources that can be used to deploy and manage a SharePoint farm
C#
247
star
5

NetworkingDsc

DSC resources for configuring settings related to networking.
PowerShell
226
star
6

xPSDesiredStateConfiguration

DSC resources for configuring common operating systems features, files and settings.
PowerShell
209
star
7

SecurityPolicyDsc

A wrapper around secedit.exe to configure local security policies
PowerShell
177
star
8

WebAdministrationDsc

This module contains DSC resources for deploying and configuring web servers and related components.
PowerShell
162
star
9

CertificateDsc

DSC resources to simplify administration of certificates on a Windows Server.
PowerShell
122
star
10

HyperVDsc

This module contains DSC resources for deployment and configuration of Microsoft Hyper-V.
PowerShell
112
star
11

TheDSCBook

leanpub manuscript for The DSC Book, forever edition
103
star
12

xWindowsUpdate

This module contains DSC resources for configuration of Microsoft Windows Update and installing Windows updates.
PowerShell
88
star
13

ExchangeDsc

This module contains DSC resources for deployment and configuration of Microsoft Exchange Server.
PowerShell
80
star
14

StorageDsc

DSC resource module is used to manage storage on Windows Servers.
PowerShell
71
star
15

DnsServerDsc

This module contains DSC resources for the management and configuration of Windows Server DNS Server.
PowerShell
65
star
16

FailoverClusterDsc

This module contains DSC resources for deployment and configuration of Windows Server Failover Cluster.
PowerShell
60
star
17

xRobocopy

DSC Module to automate Robocopy transfers
PowerShell
54
star
18

ActiveDirectoryCSDsc

DSC resources for installing or uninstalling Active Directory Certificate Services components in Windows Server.
PowerShell
51
star
19

dsccommunity.org

DSC community organisation's website
HTML
43
star
20

CommonTasks

DSC Configuration (Composite Resource) for demo DSC and Datum
PowerShell
42
star
21

xRemoteDesktopSessionHost

This module contains DSC resources for the management and configuration of Microsoft Remote Desktop Session Host (RDSH).
PowerShell
36
star
22

cNtfsAccessControl

The cNtfsAccessControl DSC resource module.
PowerShell
33
star
23

xPendingReboot

PowerShell
31
star
24

UpdateServicesDsc

This module contains community maintained DSC resources for deployment and configuration of Windows Server Update Services.
PowerShell
31
star
25

xDscDiagnostics

This module contains cmdlets for analyzing DSC event logs.
PowerShell
31
star
26

xSmbShare

THIS MODULE HAS BEEN DEPRECATED Please use ComputerManagementDsc/SmbShare instead: https://github.com/PowerShell/ComputerManagementDsc
PowerShell
28
star
27

ConfigMgrCBDsc

This module contains DSC resources for the management and configuration of Microsoft System Center Configuration Manager Current Branch (ConfigMgrCB).
PowerShell
27
star
28

xDhcpServer

This module contains DSC resources for deployment and configuration of Microsoft DHCP Server.
PowerShell
26
star
29

AuditPolicyDsc

PowerShell
25
star
30

xDSCResourceDesigner

PowerShell
24
star
31

xWindowsEventForwarding

DSC Module to manage Windows Event Forwarding
PowerShell
23
star
32

TheDSCBookCode

PowerShell
23
star
33

DFSDsc

DSC Resource for configuring Windows Distributed File System (Replication and Namespaces)
PowerShell
23
star
34

GPRegistryPolicyDsc

DSC resources used to apply and manage local group policies by modifying the respective .pol file.
PowerShell
21
star
35

xDatabase

PowerShell
20
star
36

xBitlocker

This DSC module allows you to configure Bitlocker on a single disk, configure a TPM chip, or automatically enable Bitlocker on multiple disks.
PowerShell
20
star
37

WSManDsc

DSC resources for configuring WS-Management and PowerShell Remoting.
PowerShell
19
star
38

xRemoteDesktopAdmin

PowerShell
17
star
39

xSystemSecurity

THIS MODULE HAS BEEN DEPRECATED. See the README.md for more information.
PowerShell
17
star
40

xSCOM

PowerShell
17
star
41

xCredSSP

This module contains DSC resources for configuration of the WSMan Credential Security Support Provider (CredSSP).
PowerShell
16
star
42

OfficeOnlineServerDsc

This module contains DSC resources for deployment and configuration of Office Online Server.
PowerShell
15
star
43

FileContentDsc

DSC resources for setting the content of files. Configuration text files are the most common use case for this module.
PowerShell
15
star
44

xSCSMA

PowerShell
14
star
45

xJea

This module is deprecated, please use https://github.com/dsccommunity/JeaDsc instead.
PowerShell
14
star
46

xWinEventLog

THIS MODULE HAS BEEN DEPRECATED Please use ComputerManagementDsc instead: https://github.com/PowerShell/ComputerManagementDsc
PowerShell
12
star
47

xChrome

PowerShell
12
star
48

SChannelDsc

PowerShell
12
star
49

xSqlPs

THIS MODULE HAS BEEN DEPRECATED Please use SqlServerDsc instead: https://github.com/PowerShell/SqlServerDsc
PowerShell
12
star
50

FSRMDsc

DSC resources for configuring Windows File Server Resource Manager.
PowerShell
11
star
51

xSCVMM

PowerShell
10
star
52

DscResource.DocGenerator

Module for generation of DSC resource documentation
PowerShell
9
star
53

DscResource.Common

This module contains common functions that are used in DSC resources.
PowerShell
9
star
54

xMySql

PowerShell
9
star
55

xFirefox

PowerShell
9
star
56

xPowerShellExecutionPolicy

THIS MODULE HAS BEEN DEPRECATED Please use PowershellExecutionPolicy instead: https://github.com/PowerShell/ComputerManagementDsc
PowerShell
8
star
57

xWebDeploy

PowerShell
8
star
58

xAzurePack

PowerShell
7
star
59

iSCSIDsc

DSC resources for configuring Windows iSCSI targets and initiators.
PowerShell
7
star
60

xAzure

PowerShell
7
star
61

xTimeZone

THIS MODULE HAS BEEN DEPRECATED Please use ComputerManagementDsc instead: https://github.com/PowerShell/ComputerManagementDsc
PowerShell
7
star
62

FileSystemDsc

This module contains DSC resources for managing file systems.
PowerShell
7
star
63

dsccommunity.github.io

Compiled pages for the DSC Community organisation's website
HTML
6
star
64

xDefender

DSC Module for Windows Defender preferences
PowerShell
6
star
65

PSNativeCmdDevKit

Module to help developing commands that call native commands and binaries and parses their output.
PowerShell
6
star
66

xSCSPF

PowerShell
5
star
67

xSCDPM

PowerShell
5
star
68

xPhp

PowerShell
5
star
69

DscResource.AnalyzerRules

PowerShell Script Analyzer Rules to help enforce the DSC Community Guidelines
PowerShell
5
star
70

xInternetExplorerHomePage

PowerShell
5
star
71

DscResource.Test

Module to test your Projects against the HQRM guidelines
PowerShell
5
star
72

xDismFeature

THIS MODULE HAS BEEN DEPRECATED. See the README.md for more information.
PowerShell
5
star
73

xWordPress

PowerShell
4
star
74

xWindowsRestore

PowerShell
4
star
75

PasswordPolicyDsc

Composite resource to simplify managing password policies locally on a Windows Server
PowerShell
4
star
76

xSafeHarbor

PowerShell
4
star
77

NpmDsc

A DSC Resource Module for managing npm packages.
PowerShell
3
star
78

xSCSR

PowerShell
3
star
79

xAzureStorage

PowerShell
3
star
80

DscResource.Analysis

PowerShell Module for Analysing the health and other properties of a DSC Resource repository
PowerShell
3
star
81

AzureDevOpsDsc

This module contains DSC resources for deployment and configuration of initially Azure DevOps Services and later Azure DevOps Server.
PowerShell
3
star
82

PostgreSqlDsc

DSC Resources for PostgreSqlDsc
PowerShell
2
star
83

GitHubEnterpriseDsc

This module contains DSC resources for deployment and configuration of GitHub Enterprise.
PowerShell
2
star
84

DscTools

PowerShell
2
star
85

dscbook

1
star
86

AzureConnectedMachineDsc

DSC resource for managing the state of Azure Arc for servers agent
1
star
87

DpkgPackage

PS Wrapper for the Debian Package command dpkg (Debian & derivatives)
PowerShell
1
star
88

BizTalkServerDsc

Biztalk DSC Resource Module
PowerShell
1
star
89

ProtectedData

PowerShell Module for securely encrypting and sharing secret data
PowerShell
1
star
90

DscResource.Base

This module contains common classes that can be used for class-based DSC resources development.
PowerShell
1
star