Administration : les nouveautés de Microsoft DSC v3
Microsoft crée la surprise en lançant une nouvelle version de son outil de gestion des configurations, que l’on croyait abandonné au profit d’Ansible, Chef ou Puppet. Cet article explique comment s’en servir.
Après une longue période de développement, la nouvelle version de Desired State Configuration (DSC) de Microsoft arrive dans la foulée de Windows Server 2025. De nombreux administrateurs avaient fini par penser que Microsoft avait abandonné ce logiciel, d’autant qu’il existe de nombreux autres outils pour gérer la configuration et l’état, comme Ansible, Chef et Puppet. DSC v3 sera la première version majeure depuis 2016. Elle apporte plusieurs changements significatifs pour s’adapter aux besoins des administrateurs d’aujourd’hui.
Les modifications apportées à l’outil de gestion de la configuration DSC de Microsoft tentent de combler certaines lacunes des versions précédentes en étendant la couverture aux ressources en cloud et à d’autres systèmes d’exploitation afin de faire de DSC v3 un outil plus souple pour les administrateurs.
Cet article examine les problèmes que DSC tente de résoudre, les changements entre DSC v2 et DSC v3, et les avantages que vous obtiendrez en utilisant DSC v3 dans un environnement Windows.
Qu’est-ce que DSC ?
DSC est un outil de configuration déclaratif qui maintient les composants d’un système dans un état spécifique. Dans ce contexte, déclaratif signifie que l’administrateur définit l’état plutôt que la méthode technique pour atteindre cet état. DSC est sans agent, comme Ansible, ce qui signifie qu’il ne nécessite aucun logiciel supplémentaire.
Par exemple, si vos serveurs ont besoin d’un paramètre de registre spécifique, au lieu d’écrire un script pour effectuer la modification, un fichier de configuration DSC inclut le chemin d’accès et la valeur souhaités. DSC exécute ensuite les modifications en utilisant une ressource.
DSC utilise le concept d’opérations idempotentes, ce qui signifie qu’il peut appliquer un changement de configuration plusieurs fois, mais qu’il ne dévie pas de la première application et ne provoque pas de problèmes involontaires. DSC analyse un système à la recherche de différences par rapport à l’état souhaité, puis ne modifie que les éléments qui ont besoin d’être ajustés. En plus de maintenir un environnement cohérent, cette méthode est plus efficace en évitant un traitement excessif.
L’extensibilité de DSC pour travailler avec des outils d’orchestration, tels que WinGet, donne aux administrateurs un outil pour faciliter le processus d’installation d’un nouvel appareil ou d’un nouveau projet en installant automatiquement les applications nécessaires sur une machine.
Quels sont les problèmes que DSC est censé résoudre ?
Dans les environnements de serveurs, en particulier les grands environnements, le maintien d’une configuration cohérente sur toutes les machines est une tâche fastidieuse. Si vous avez appris à utiliser un outil tel que PowerShell, vous pouvez rationaliser cette tâche à l’aide de scripts.
Avec DSC, vous pouvez automatiser l’ensemble du processus afin d’éviter les dérives de configuration, sans avoir à définir les étapes de chaque élément. Cette approche permet aux administrateurs de se concentrer sur l’état souhaité de l’infrastructure plutôt que sur la manière d’y parvenir.
En définissant une configuration pour les machines, DSC assure la cohérence en contrôlant les déploiements de rôles sur les serveurs, en garantissant la conformité par l’application de correctifs et de mises à jour et en régulant les autorisations de fichiers et de dossiers.
En quoi DSC v3 diffère-t-il de PowerShell DSC v2 ?
Le changement le plus évident entre PowerShell DSC v2 et DSC v3 est le nom. DSC v3 ne nécessite plus PowerShell et n’est plus réservé aux systèmes Windows. Ses principales dépendances sont contenues dans l’exécutable autonome. Les autres changements notables sont les suivants :
- Ressources indépendantes du langage. Le DSC v3 prend en charge les ressources écrites dans n’importe quel langage. La seule condition est que le fournisseur puisse exécuter la ressource et que celle-ci fournisse une sortie JSON au DSC. Par exemple, le référentiel d’échantillons DSC de Microsoft contient une ressource DSC v3 écrite dans le langage de programmation Go. Après avoir compilé la ressource, un fichier JSON d’accompagnement indique à DSC v3 comment exécuter la ressource. Si le binaire compilé peut être exécuté sur le système ciblé, DSC v3 l’utilise comme ressource DSC. Les utilisateurs plus familiers avec Bash ou Python peuvent utiliser ces langages pour gérer les ressources.
- Introduction d’adaptateurs. La compatibilité ascendante avec DSC PowerShell était l’une des principales préoccupations liées à la nouvelle version de DSC. Microsoft a déclaré que DSC v3 prenait en charge toutes les ressources précédentes grâce à des adaptateurs. Un adaptateur DSC v3 est un type de ressource qui permet d’utiliser des ressources sans manifeste de ressources DSC, en agissant comme un manifeste de ressources de substitution.
- Standardisation sur JSON. Microsoft a conçu DSC v3 pour que toutes les communications de données soient sérialisées en JSON, qui est plus facile à utiliser que le Managed Object Format de PowerShell DSC v2. Vous avez également la possibilité d’utiliser YAML pour écrire les manifestes de ressources et les données d’entrée et de sortie de DSC. L’abandon de la dépendance à PowerShell et l’utilisation de JSON ou YAML rendent DSC v3 plus flexible pour une utilisation au-delà des systèmes Windows.
- Connexion au cloud. Microsoft a lié plus étroitement DSC avec Azure, pour renforcer l’intégration avec des services tels qu’Azure Automanage, ce qui permet de maintenir une cohérence avec les VM Azure. Ce changement rend DSC v3 plus attrayant pour les entreprises dans un déploiement en cloud hybride.
Quels sont les avantages de DSC v3 ?
Pour les administrateurs de serveurs Windows, il n’est peut-être pas logique d’abandonner le DSC PowerShell, car il est intégré à Windows PowerShell et à Windows Management Framework. Toutefois, le passage à la version 3 de DSC présente de nombreux avantages :
- Support multi-plateforme. Le développement de l’expertise dans PowerShell DSC limite votre expertise à Windows. En utilisant des adaptateurs dans DSC v3, vous pouvez toujours utiliser ces compétences PowerShell DSC, tout en élargissant votre ensemble de compétences avec un outil qui fonctionne sur Windows, Linux et macOS. Microsoft a remanié le module PowerShell PSDesiredStateConfiguration pour le rendre multi-plateforme en supprimant la dépendance à l’égard de Windows Management Instrumentation, afin d’éviter l’utilisation d’un gestionnaire de configuration local.
- Facilité d’utilisation. Les ressources DSC PowerShell écrites en tant que classes PowerShell étaient faciles à lire, mais dans DSC v3, il n’est pas nécessaire de comprendre le code PowerShell pour savoir ce que fait une ressource ou même comment l’utiliser. DSC v3 est standardisé sur JSON, qui est une norme industrielle interfonctionnelle.
- Amélioration de l’évolutivité et de l’intégration. Comme DSC v3 est invoqué en tant que commande et ne s’exécute plus en tant que service ou ne nécessite plus de gestionnaire de configuration local, il est plus facile à utiliser et à faire évoluer. Tout outil capable d’exécuter une commande sur Windows Server peut appliquer les configurations DSC. Microsoft a mis à jour DSC v3 pour qu’il fonctionne avec des outils d’orchestration, tels que WinGet et Azure Machine Configuration.
Comment utiliser DSC v3 ?
L’installation de DSC v3 est simple. Téléchargez la dernière version à partir du référentiel DSC v3. Dans le cadre de cet article, nous nous concentrerons sur la version Windows. Extrayez le fichier zip dans un dossier. À partir de là, exécutez dsc.exe avec votre interpréteur de commandes préféré.

Pour voir les ressources disponibles dans les configurations, exécutez la commande suivante :
.\dsc.exe resource list

Comment construire une configuration dans DSC v3 ?
Les instructions suivantes expliquent comment écrire une configuration dans DSC v3 en YAML. Cet exemple utilise la ressource registry. Au minimum, un document de configuration doit faire référence au schéma de ressources DSC et à au moins une ressource. L’exemple YAML suivant définit une valeur dans le registre sur une machine Windows pour forcer le panneau de configuration à s’afficher à l’aide de la vue classique des icônes.
# registryExample.dsc.config.yaml
$schema:
https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json
resources:
- name: Force icon view in Control Panel
type: Microsoft.Windows/Registry
properties:
keyPath:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\
valueName: ForceClassicControlPanel
valueData:
DWord: 1
Même si vous ne connaissez pas les documents de configuration de DSC v3, le code YAML ne devrait pas être difficile à comprendre. Le code indique au système d’utiliser le type de ressource du registre Windows et transmet plusieurs propriétés à cette ressource. Pour découvrir les propriétés à transmettre, utilisez la commande suivante qui permet d’étudier la ressource avec DSC.
.\dsc.exe resource schema --resource Microsoft.Windows/Registry

La liste des propriétés indique keyPath, valueData et valueName. Le champ $ref renvoie à des données, plus bas dans la sortie, qui expliquent chaque valeur. Par exemple, voici la première partie de RegistryValueData.
RegistryValueData:
oneOf:
- type: object
required:
- String
properties:
String:
type: string
additionalProperties: false
- type: object
required:
- ExpandString
properties:
ExpandString:
type: string
additionalProperties: false
- type: object
required:
- Binary
properties:
Binary:
type: array
items:
type: integer
format: uint8
minimum: 0.0
additionalProperties: false
- type: object
required:
- DWord
properties:
DWord:
type: integer
format: uint32
minimum: 0.0
additionalProperties: false
En bas, passez une valeur DWord, qui fait partie du document de configuration pris en exemple.
Comment appliquer une configuration avec DSC v3 ?
Après avoir défini la configuration, testez-la en procédant comme suit.
.\dsc.exe config get -p .\registryExample.dsc.config.yaml

L’option -p indique le chemin d’accès au document de configuration. Pour appliquer le fichier de configuration YAML à DSC v3, utilisez la commande suivante.
.\dsc.exe config set -p .\registryExample.dsc.config.yaml

Dans la sortie, le dernier message indique qu’il n’y a pas eu d’erreurs et que le registre Windows a été modifié pour correspondre au fichier de configuration. Il contient également de bonnes informations, telles que le contexte de sécurité (securityContext). Exécutez la commande get dans une session PowerShell sans privilège et la commande set en exécutant PowerShell en tant qu’administrateur.
Dans notre cas, le code PowerShell suivant vérifie la modification.
$splat = @{
Path =
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\'
Name = 'ForceClassicControlPanel'
}
Get-ItemProperty @splat

DSC v3 vaut la peine de s’y intéresser pour voir comment il se situe par rapport à des offres similaires. Le récent regain de développement et la visibilité de DSC v3 en tant que projet Open source sur GitHub sont de bon augure pour l’avenir de cet outil d’automatisation.