Configuratiepakketartefacten voor aangepaste machines maken

Voordat u begint, is het een goed idee om de overzichtspagina voor machineconfiguratie te lezen.

Machineconfiguratie maakt gebruik van DSC (Desired State Configuration ) bij het controleren en configureren van zowel Windows als Linux. De DSC-configuratie definieert de toestand waarin de machine zich moet bevinden.

Belangrijk

Aangepaste pakketten die de status van een omgeving controleren en configuraties toepassen, hebben de ondersteuningsstatus Algemeen beschikbaar. De volgende beperkingen zijn echter van toepassing:

Als u machineconfiguratiepakketten wilt gebruiken die configuraties toepassen, is versie 1.26.24 of hoger van azure VM-gastconfiguratie, of Arc-agent 1.10.0 of hoger vereist.

De GuestConfiguration-module is alleen beschikbaar op Ubuntu 18 en hoger. Het pakket en beleid dat door de module wordt geproduceerd, kunnen echter worden gebruikt voor elke Linux-distributie en -versie die wordt ondersteund in Azure of Arc.

Het testen van pakketten in macOS is niet beschikbaar.

Gebruik geen geheimen of vertrouwelijke informatie in aangepaste inhoudspakketten.

Gebruik de volgende stappen om uw eigen configuratie te maken voor het beheren van de status van een Azure- of niet-Azure-machine.

PowerShell 7 en vereiste PowerShell-modules installeren

Volg eerst de stappen in Het instellen van een ontwerpomgeving voor machineconfiguraties. Deze stappen helpen u bij het installeren van de vereiste versie van PowerShell voor uw besturingssysteem, de GuestConfiguration-module en de PSDesiredStateConfiguration-module .

Een configuratie maken

Voordat u een configuratiepakket maakt, ontwerpt en compileert u een DSC-configuratie. Voorbeeldconfiguraties zijn beschikbaar voor Windows en Linux.

Belangrijk

Bij het compileren van configuraties voor Windows gebruikt u PSDesiredStateConfiguration versie 2.0.7 (de stabiele release). Bij het compileren van configuraties voor Linux installeert u de prerelease versie 3.0.0.

Deze voorbeeldconfiguratie is voor Windows-computers. Hiermee configureert u de machine voor het maken van de MC_ENV_EXAMPLE omgevingsvariabele in de Process en Machine bereiken. De waarde van de variabele wordt ingesteld op '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

Als deze definitie is opgeslagen in het MyConfig.ps1 scriptbestand, kunt u het script uitvoeren om de configuratie te compileren.

. .\MyConfig.ps1
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:39 AM           1080 localhost.mof

De configuratie wordt gecompileerd in het localhost.mof bestand in de MyConfig map in de huidige werkmap. Wijzig de naam localhost.mof in de naam die u wilt gebruiken als pakketnaam, zoals 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

Notitie

In dit voorbeeld ziet u hoe u een configuratie voor een Windows-computer maakt en compileert. Voor Linux moet u een aangepaste DSC-resourcemodule maken met behulp van PowerShell-klassen. Het artikel Het schrijven van een aangepaste DSC-resource met PowerShell-klassen bevat een volledig voorbeeld van een aangepaste resource en configuratie, getest met machineconfiguratie.

De rest van dit artikel is van toepassing op configuraties die zijn gedefinieerd voor Linux- en Windows-computers, behalve waar het platformspecifieke overwegingen vermeldt.

Een configuratiepakketartefact maken

Zodra de MOF is gecompileerd, moeten de ondersteunende bestanden samen worden verpakt. Het voltooide pakket wordt gebruikt door de computerconfiguratie om de Azure Policy-definities te maken.

Met de New-GuestConfigurationPackage cmdlet wordt het pakket gemaakt. Modules die vereist zijn voor de configuratie, moeten beschikbaar zijn in $Env:PSModulePath de ontwikkelomgeving, zodat de opdrachten in de module deze kunnen toevoegen aan het pakket.

Parameters van de cmdlet bij het New-GuestConfigurationPackage maken van Windows-inhoud:

  • Naam: naam van computerconfiguratiepakket.
  • Configuratie: volledig pad naar gecompileerd DSC-configuratiedocument.
  • Pad: pad naar uitvoermap. Deze parameter is optioneel. Als dit niet is opgegeven, wordt het pakket gemaakt in de huidige map.
  • Type: (Audit, AuditandSet) Bepaalt of de configuratie alleen moet controleren of de configuratie de status van de machine moet wijzigen als deze niet de gewenste status heeft. De standaardwaarde is Audit.

Voor deze stap is geen uitbreiding vereist. De parameter Force wordt gebruikt om bestaande pakketten te overschrijven, als u de opdracht meerdere keren uitvoert.

Met de volgende opdrachten maakt u een pakketartefact:

# 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

Er wordt een object geretourneerd met de naam en het pad van het gemaakte pakket.

Name     Path
----     ----
MyConfig C:\dsc\MyConfig.zip

Verwachte inhoud van een machineconfiguratie-artefact

Het voltooide pakket wordt gebruikt door de computerconfiguratie om de Azure Policy-definities te maken. Het pakket bestaat uit:

  • De gecompileerde DSC-configuratie als een MOF
  • Map Modules
    • GuestConfiguration-module
    • DscNativeResources-module
    • DSC-resourcemodules die vereist zijn voor de MOF
  • Een metaconfig-bestand waarin het pakket type wordt opgeslagen en version

Met de PowerShell-cmdlet wordt het pakketbestand .zip gemaakt. Er is geen map of versiemap op hoofdniveau vereist. De pakketindeling moet een .zip bestand zijn en mag niet groter zijn dan 100 MB wanneer deze niet is gecomprimeerd.

U kunt het archief uitbreiden om het te inspecteren met behulp van de Expand-Archive cmdlet.

Expand-Archive -Path .\MyConfig.zip -DestinationPath MyConfigZip

U kunt de totale grootte van het niet-gecomprimeerde pakket ophalen met PowerShell.

Get-ChildItem -Recurse -Path .\MyConfigZip |
    Measure-Object -Sum Length |
    ForEach-Object -Process {
        $Size = [math]::Round(($_.Sum / 1MB), 2)
        "$Size MB"
    }

Machineconfiguratie uitbreiden met hulpprogramma's van derden

De artefactpakketten voor machineconfiguratie kunnen worden uitgebreid met hulpprogramma's van derden. Voor het uitbreiden van de computerconfiguratie is de ontwikkeling van twee onderdelen vereist.

  • Een Desired State Configuration-resource die alle activiteiten verwerkt die betrekking hebben op het beheren van het hulpprogramma van derden
    • Installeren
    • Aanroepen
    • Uitvoer converteren
  • Inhoud in de juiste indeling voor het hulpprogramma om systeemeigen te gebruiken

Voor de DSC-resource is aangepaste ontwikkeling vereist als er nog geen communityoplossing bestaat. Community-oplossingen kunnen worden gedetecteerd door in de PowerShell Gallery te zoeken naar tag GuestConfiguration.

Notitie

De uitbreidbaarheid van de machineconfiguratie is een 'Bring Your Own License'-scenario. Zorg ervoor dat u voldoet aan de voorwaarden van alle hulpprogramma's van derden voordat u deze gebruikt.

Nadat de DSC-resource is geïnstalleerd in de ontwikkelomgeving, gebruikt u de parameter FilesToInclude om New-GuestConfigurationPackage inhoud op te nemen voor het platform van derden in het inhoudsartefact.

Volgende stap