Guide pratique pour créer des artefacts de package de configuration de machine personnalisés
Avant de commencer, nous vous conseillons de lire la page de présentation de la configuration machine.
La configuration d'ordinateur utilise DSC (Desired State Configuration) lors de l’audit et de la configuration de Windows et de Linux. La configuration DSC définit la condition dans laquelle la machine doit se trouver.
Important
Les packages personnalisés qui auditent l’état d’un environnement et appliquent des configurations sont à l’état de prise en charge en disponibilité générale. Toutefois, les limites suivantes s’appliquent :
Pour utiliser les packages de configuration d’ordinateur qui appliquent des configurations, l’extension de configuration invitée de la machine virtuelle Azure version 1.26.24 (ou une version ultérieure) ou l’agent Arc version 1.10.0 (ou une version ultérieure) est requis.
Le module GuestConfiguration est disponible uniquement sur Ubuntu 18 et versions ultérieures. Toutefois, vous pouvez utiliser le package et les stratégies produits par le module sur n’importe quelle distribution et version de Linux prise en charge dans Azure ou Arc.
Les packages de test sur macOS ne sont pas disponibles.
N’utilisez pas de secrets ni d’informations confidentielles dans des packages de contenu personnalisés.
Utilisez les actions suivantes pour créer votre propre configuration pour la gestion de l’état d’une machine Azure ou non-Azure.
Installer PowerShell 7 et les modules PowerShell requis
Tout d’abord, suivez les étapes décrites dans Guide pratique pour configurer un environnement de création de configuration de machine. Ces étapes vous aident à installer la version requise de PowerShell pour votre système d’exploitation, le module GuestConfiguration et le module PSDesiredStateConfiguration.
Créer une configuration
Avant de créer un package de configuration, créez et compilez une configuration DSC. Des exemples de configurations sont disponibles pour Windows et Linux.
Important
Lors de la compilation de configurations Windows, utilisez PSDesiredStateConfiguration version 2.0.7 (la version stable). Lors de la compilation de configurations pour Linux, installez la version préliminaire 3.0.0.
Cet exemple de configuration s’applique aux ordinateurs Windows. Il configure la machine pour créer la variable d’environnement MC_ENV_EXAMPLE
dans les étendues Process
et Machine
. La valeur de la variable est définie sur 'This was set by machine configuration'
.
Configuration MyConfig {
Import-DscResource -Name 'Environment' -ModuleName 'PSDscResources'
Environment MachineConfigurationExample {
Name = 'MC_ENV_EXAMPLE'
Value = 'This was set by machine configuration'
Ensure = 'Present'
Target = @('Process', 'Machine')
}
}
MyConfig
Une fois cette définition enregistrée dans le fichier de script MyConfig.ps1
, vous pouvez exécuter le script pour compiler la configuration.
. .\MyConfig.ps1
Directory: C:\dsc\MyConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/16/2023 10:39 AM 1080 localhost.mof
La configuration est compilée dans le fichier localhost.mof
du dossier MyConfig
dans le répertoire de travail actif. Remplacez localhost.mof
par le nom que vous souhaitez utiliser comme nom de package, par exemple MyConfig.mof
.
Rename-Item -Path .\MyConfig\localhost.mof -NewName MyConfig.mof -PassThru
Directory: C:\dsc\MyConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/16/2023 10:40 AM 1080 MyConfig.mof
Notes
Cet exemple montre comment créer et compiler une configuration pour un ordinateur Windows. Pour Linux, vous devez créer un module de ressources DSC personnalisé à l’aide des classes PowerShell. L’article Écriture d’une ressource DSC personnalisée avec les classes PowerShell inclut un exemple complet d’une ressource personnalisée et d’une configuration, testé avec la configuration d’ordinateur.
Le reste de cet article s’applique aux configurations définies pour les ordinateurs Linux et Windows, sauf lorsqu’il mentionne des considérations spécifiques à la plateforme.
Créer un artefact de package de configuration
Une fois la compilation du fichier MOF terminée, les fichiers de prise en charge doivent être regroupés en un package. Le package terminé est utilisé par la configuration machine pour créer les définitions Azure Policy.
La cmdlet New-GuestConfigurationPackage
crée le package. Les modules nécessaires à la configuration doivent être disponibles dans $Env:PSModulePath
pour l’environnement de développement afin que les commandes du module puissent les ajouter au package.
Paramètres de la cmdlet New-GuestConfigurationPackage
lors de la création du contenu Windows :
- Nom : nom du package de configuration machine.
- Configuration : Chemin d’accès complet au document de configuration DSC compilé.
- Chemin d’accès : Chemin d’accès au dossier de sortie. Ce paramètre est facultatif. S’il n’est pas spécifié, le package est créé dans le répertoire actif.
- Type : (
Audit
,AuditandSet
) détermine si la configuration doit uniquement effectuer un audit ou si la configuration doit modifier l’état de l’ordinateur s’il ne s’agit pas de l’état désiré. Par défaut, il s’agit deAudit
. - FrequencyMinutes : fréquence d’évaluation en minutes du package sur la machine.
- FilesToInclude : liste de tableau des chemins d’accès aux fichiers supplémentaires à inclure dans le package généré.
Cette étape ne nécessite pas d’élévation. Le paramètre Force est utilisé pour remplacer les packages existants, si vous exécutez la commande plusieurs fois.
Les commandes suivantes créent un artefact de package :
# Create a package that will only audit compliance
$params = @{
Name = 'MyConfig'
Configuration = './MyConfig/MyConfig.mof'
Type = 'Audit'
Force = $true
}
New-GuestConfigurationPackage @params
# Create a package that will audit and apply the configuration (Set)
$params = @{
Name = 'MyConfig'
Configuration = './MyConfig/MyConfig.mof'
Type = 'AuditAndSet'
Force = $true
}
New-GuestConfigurationPackage @params
Un objet est retourné avec le Nom et le Chemin d’accès du package créé.
Name Path
---- ----
MyConfig C:\dsc\MyConfig.zip
Contenu attendu d’un artefact de configuration machine
Le package terminé est utilisé par la configuration machine pour créer les définitions Azure Policy. Le package comprend les éléments suivants :
- La configuration DSC compilée au format MOF
- Dossier Modules
- Module GuestConfiguration
- Module DscNativeResources
- Modules de ressources DSC requis par le MOF
- Fichier metaconfig qui stocke le package
type
etversion
L’applet de commande PowerShell crée le package de fichier .zip
. Aucun dossier de niveau racine ou dossier de version n’est requis. Le format du package doit être un fichier .zip
et ne peut pas dépasser une taille totale de 100 Mo lors de la décompression.
Vous pouvez développer l’archive pour l’inspecter à l’aide de la cmdlet Expand-Archive
.
Expand-Archive -Path .\MyConfig.zip -DestinationPath MyConfigZip
Vous pouvez obtenir la taille totale du package non compressé avec PowerShell.
Get-ChildItem -Recurse -Path .\MyConfigZip |
Measure-Object -Sum Length |
ForEach-Object -Process {
$Size = [math]::Round(($_.Sum / 1MB), 2)
"$Size MB"
}
Extension de la configuration machine avec des outils tiers
Les packages d’artefacts pour la configuration machine peuvent être étendus pour inclure des outils tiers. L’extension de la configuration machine requiert le développement de deux composants.
- Une ressource Desired State Configuration (DSC) qui gère toutes les activités liées à la gestion de l’outil tiers
- Installer
- Appeler
- Convertir la sortie
- Contenu dans le format correct pour l’outil à consommer en mode natif
La ressource DSC requiert un développement personnalisé d’il n’existe pas encore de solution de communauté. Les solutions de la communauté peuvent être affichées en recherchant la balise GuestConfiguration dans PowerShell Gallery.
Notes
L’extensibilité de la configuration machine est un scénario de type BYOL (apportez votre propre licence). Veillez à respecter les conditions générales de tout outil tiers avant de l’utiliser.
Une fois la ressource DSC installée dans l’environnement de développement, utilisez le paramètre FilesToInclude pour New-GuestConfigurationPackage
afin d’inclure le contenu de la plateforme tierce dans l’artefact de contenu.