|
1 | 1 | # DSCv3 |
2 | 2 |
|
3 | | -[NOTICE] This repo is currently NOT accepting contributions and is public and Open Source to show progress. Once we are at a feature complete state, we can start taking contributions. |
4 | | - |
5 | | -## High level design goals |
6 | | - |
7 | | -- Cross-platform and Open Source |
8 | | -- Bring your own agent |
9 | | - - No LCM support |
10 | | - - Azure Guest Config, Azure Automanaged VM, WinGet partners as orchestration agents |
11 | | -- Author resources in PowerShell or any language |
12 | | - - Need to be executable from command-line |
13 | | - - Still supporting script based and class based resources |
14 | | -- Native `dsc` command removes dependency on PowerShell |
15 | | - - Able to invoke PowerShell based resources (Windows PowerShell or PowerShell 7 runtimes) |
16 | | -- Move from MOF to JSON |
17 | | -- End users can author configuration in YAML or JSON and apply them using `dsc` command |
| 3 | +> [!NOTE] |
| 4 | +> This repo isn't accepting code contributions. It's public and open source to show progress and |
| 5 | +> enable feedback. Once we're at a feature complete state, we can start taking code contributions. |
| 6 | +
|
| 7 | +## What's DSCv3? |
| 8 | + |
| 9 | +DSCv3 is the latest iteration of Microsoft's Desired State Configuration platform. DSCv3 is an open |
| 10 | +source command line application that abstracts the management of software components declaratively |
| 11 | +and idempotently. DSCv3 runs on Linux, macOS, and Windows without any external dependencies. |
| 12 | + |
| 13 | +With DSCv3, you can: |
| 14 | + |
| 15 | +- Author resources to manage your systems in any language |
| 16 | +- Invoke individual resources |
| 17 | +- Create configuration documents that define the desired state of a system |
| 18 | + |
| 19 | +### Differences from PowerShell DSC |
| 20 | + |
| 21 | +DSCv3 differs from PowerShell DSC in a few important ways: |
| 22 | + |
| 23 | +- DSCv3 doesn't depend on PowerShell. You can use DSCv3 without PowerShell installed and manage |
| 24 | + resources written in bash, python, C#, Go, or any other language. |
| 25 | +- DSCv3 doesn't include a local configuration manager. DSCv3 is invoked as a command. It doesn't |
| 26 | + run as a service. |
| 27 | +- Non-PowerShell resources define their schemas with JSON files, not MOF files. |
| 28 | +- Configuration documents are defined in JSON or YAML files, not PowerShell script files. |
| 29 | + |
| 30 | +Importantly, while DSCv3 represents a major change to the DSC platform, DSCv3 is able to invoke |
| 31 | +PowerShell DSC Resources, including script-based and class-based DSC Resources, as they exist today. The |
| 32 | +configuration documents aren't compatible, but all published PowerShell DSC Resources are. You can |
| 33 | +use PowerShell DSC resources in DSCv3 with both Windows PowerShell and PowerShell. |
| 34 | + |
| 35 | +## Installing DSCv3 |
| 36 | + |
| 37 | +To install DSC v3: |
| 38 | + |
| 39 | +1. Download the [latest release from this repository][01]. |
| 40 | +1. Expand the release archive. |
| 41 | +1. Add the folder containing the expanded archive contents to the `PATH`. |
| 42 | + |
| 43 | +## Expore DSCv3 |
| 44 | + |
| 45 | +If you're new to DSC or configuration management, we recommend reviewing the [documentation][02]. |
| 46 | + |
| 47 | +If you're already familiar with DSC or just want to start experimenting with v3, we recommend |
| 48 | +reviewing the [Samples repository][03] and the accompanying [tutorial site][04]. |
| 49 | + |
| 50 | +## Integrating with DSCv3 |
| 51 | + |
| 52 | +DSCv3 is a platform tool that abstracts the concerns for defining and invoking resources. Higher |
| 53 | +order tools, like Azure Machine Configuration, Azure Automanaged VM, and WinGet are early partners |
| 54 | +for DSCv3 as orchestration agents. |
| 55 | + |
| 56 | +DSCv3 uses JSON schemas to define the structure of resources, configuration documents, and the |
| 57 | +outputs that DSCv3 returns. These schemas make it easier to integrate DSCv3 with other tools, |
| 58 | +because they standardize and document how to interface with DSCv3. |
| 59 | + |
| 60 | +[01]: https://github.com/PowerShell/DSC/releases/latest |
| 61 | +[02]: https://learn.microsoft.com/powershell/dsc/overview?view=dsc-3.0&preserve-view=true |
| 62 | +[03]: https://github.com/PowerShell/DSC-Samples |
| 63 | +[04]: https://powershell.github.io/DSC-Samples |
0 commit comments