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 de Audit.
  • 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 et version

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.

Étape suivante