about_DesiredStateConfiguration
Description courte
Fournit une brève introduction à la fonctionnalité DSC (Desired State Configuration) PowerShell.
Description longue
DSC est une plateforme de gestion dans PowerShell qui permet de déployer et de gérer les données de configuration pour les services logiciels et de gérer l’environnement dans lequel ces services s’exécutent.
DSC fournit un ensemble d’extensions de langage PowerShell, de nouvelles applets de commande et de ressources que vous pouvez utiliser pour spécifier de manière déclarative la façon dont vous souhaitez que l’état de votre environnement logiciel soit configuré. DSC vous permet également de mettre à jour et de gérer des configurations existantes.
DSC est introduit dans PowerShell 4.0.
Pour plus d’informations sur DSC, consultez PowerShell Desired State Configuration Overview.
DÉVELOPPEMENT DE RESSOURCES DSC AVEC DES CLASSES
À compter de PowerShell 5.0, vous pouvez développer des ressources DSC à l’aide de classes. Pour plus d’informations, consultez about_Classes et écrire une ressource DSC personnalisée avec des classes PowerShell.
UTILISATION DE DSC
Pour utiliser DSC pour configurer votre environnement, commencez par définir un bloc de script PowerShell à l’aide du mot clé Configuration, suivi d’un identificateur, qui est à son tour suivi de la paire d’accolades limitant le bloc. Dans le bloc de configuration, vous pouvez définir des blocs de nœud qui spécifient l’état de configuration souhaité pour chaque nœud (ordinateur) dans l’environnement. Un bloc de nœud commence par le mot clé Node, suivi du nom de l’ordinateur cible, qui peut être une variable. Après le nom de l’ordinateur, venez les accolades qui délimitent le bloc de nœud. À l’intérieur du bloc de nœud, vous pouvez définir des blocs de ressources pour configurer des ressources spécifiques. Un bloc de ressources commence par le nom de type de la ressource, suivi de l’identificateur que vous souhaitez spécifier pour ce bloc, suivi des accolades qui délimitent le bloc, comme illustré dans l’exemple suivant.
Configuration MyWebConfig {
# Parameters are optional
param ($MachineName, $WebsiteFilePath)
# A Configuration block can have one or more Node blocks
Node $MachineName
{
# Next, specify one or more resource blocks
# WindowsFeature is one of the resources you can use in a Node block
# This example ensures the Web Server (IIS) role is installed
WindowsFeature IIS
{
# To ensure that the role is not installed, set Ensure to "Absent"
Ensure = "Present"
Name = "Web-Server" # Use the Name property from Get-WindowsFeature
}
# You can use the File resource to create files and folders
# "WebDirectory" is the name you want to use to refer to this instance
File WebDirectory
{
Ensure = "Present" # You can also set Ensure to "Absent"
Type = "Directory" # Default is "File"
Recurse = $true
SourcePath = $WebsiteFilePath
DestinationPath = "C:\inetpub\wwwroot"
# Ensure that the IIS block is successfully run first before
# configuring this resource
DependsOn = "[WindowsFeature]IIS" # Use for dependencies
}
}
}
Pour créer une configuration, appelez le bloc configuration de la même façon que vous appeliez une fonction PowerShell, en transmettant les paramètres attendus que vous avez peut-être définis (deux dans l’exemple ci-dessus). Par exemple, dans ce cas :
MyWebConfig -MachineName "TestMachine" -WebsiteFilePath `
"\\filesrv\WebFiles" -OutputPath "C:\Windows\system32\temp"
# OutputPath is optional
Cela génère un fichier MOF par nœud au niveau du chemin que vous spécifiez. Ces fichiers MOF spécifient la configuration souhaitée pour chaque nœud. Ensuite, utilisez l’applet de commande suivante pour analyser les fichiers MOF de configuration, envoyer chaque nœud à sa configuration correspondante et appliquer ces configurations. Notez que vous n’avez pas besoin de créer un fichier MOF distinct pour les ressources DSC basées sur des classes.
Start-DscConfiguration -Verbose -Wait -Path "C:\Windows\system32\temp"
UTILISATION DE DSC POUR MAINTENIR L’ÉTAT DE CONFIGURATION
Avec DSC, la configuration est idempotente. Cela signifie que si vous utilisez DSC pour appliquer la même configuration plusieurs fois, l’état de configuration résultant sera toujours le même. En raison de cela, si vous pensez que tous les nœuds de votre environnement peuvent avoir dérivé de l’état de configuration souhaité, vous pouvez à nouveau appliquer la même configuration DSC pour les ramener à l’état souhaité. Vous n’avez pas besoin de modifier le script de configuration pour traiter uniquement les ressources dont l’état est dérivé de l’état souhaité.
L’exemple suivant montre comment vérifier si l’état réel de la configuration sur un nœud donné est dérivé de la dernière configuration DSC adoptée sur le nœud. Dans cet exemple, nous vérifions la configuration de l’ordinateur local.
$session = New-CimSession -ComputerName "localhost"
Test-DscConfiguration -CimSession $session
RESSOURCES DSC INTÉGRÉES
Vous pouvez utiliser les ressources intégrées suivantes dans vos scripts de configuration :
Nom | Propriétés |
---|---|
File | {DestinationPath, Attributs, Somme de contrôle, Contenu...} |
Archivage | {Destination, Chemin, Somme de contrôle, Informations d’identification...} |
Environnement | {Name, DependsOn, Ensure, Path...} |
Groupe | {GroupName, Credential, DependsOn, Description...} |
Journal | {Message, DependsOn, PsDscRunAsCredential} |
Package | {Name, Path, ProductId, Arguments...} |
Registre | {Key, ValueName, DependsOn, Ensure...} |
Script | {GetScript, SetScript, TestScript, Credential...} |
Service | {Name, BuiltInAccount, Credential, Dependencies...} |
Utilisateur | {UserName, DependsOn, Description, Disabled...} |
WaitForAll | {NodeName, ResourceName, DependsOn, PsDscRunAsC...} |
WaitForAny | {NodeName, ResourceName, DependsOn, PsDscRunAsC...} |
WaitForSome | {NodeCount, NodeName, ResourceName, DependsOn...} |
WindowsFeature | {Name, Credential, DependsOn, Ensure...} |
WindowsOptionalFeature | {Name, DependsOn, Ensure, LogLevel...} |
WindowsProcess | {Arguments, Chemin d’accès, Informations d’identification, DependsOn...} |
Pour obtenir la liste des ressources DSC disponibles sur votre système, exécutez l’applet de Get-DscResource
commande.
Remarque
Dans les versions de PowerShell inférieures à 7.0, Get-DscResource
ne trouve pas les ressources DSC basées sur une classe.
L’exemple de cette rubrique montre comment utiliser les ressources File et WindowsFeature. Pour afficher toutes les propriétés que vous pouvez utiliser avec une ressource, insérez le curseur dans le mot clé de ressource (par exemple, Fichier) dans votre script de configuration dans PowerShell ISE, maintenez la barre d’espace ctrl+
TROUVER D’AUTRES RESSOURCES
Vous pouvez télécharger, installer et découvrir de nombreuses autres ressources DSC disponibles qui ont été créées par la communauté des utilisateurs PowerShell et DSC, et par Microsoft. Visitez PowerShell Gallery pour parcourir et en savoir plus sur les ressources DSC disponibles.