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 isAudit
.
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 enversion
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.