Så här skapar du artefakter för anpassade datorkonfigurationspaket

Innan du börjar är det en bra idé att läsa översiktssidan för datorkonfiguration.

Datorkonfigurationen använder DSC (Desired State Configuration ) när du granskar och konfigurerar både Windows och Linux. DSC-konfigurationen definierar det tillstånd som datorn ska ha.

Viktigt!

Anpassade paket som granskar tillståndet för en miljö och tillämpar konfigurationer har stödstatus för allmänt tillgängliga (GA). Följande begränsningar gäller emellertid:

Om du vill använda datorkonfigurationspaket som tillämpar konfigurationer krävs gästkonfigurationstillägget för virtuella Azure-datorer version 1.26.24 eller senare, eller Arc-agenten 1.10.0 eller senare.

Modulen GuestConfiguration är endast tillgänglig på Ubuntu 18 och senare. Paketet och principerna som skapas av modulen kan dock användas på alla Linux-distributioner och versioner som stöds i Azure eller Arc.

Testningspaket på macOS är inte tillgängligt.

Använd inte hemligheter eller konfidentiell information i anpassade innehållspaket.

Använd följande steg för att skapa en egen konfiguration för att hantera tillståndet för en Azure- eller icke-Azure-dator.

Installera PowerShell 7 och nödvändiga PowerShell-moduler

Följ först stegen i Konfigurera en datorkonfigurationsredigeringsmiljö. De här stegen hjälper dig att installera den nödvändiga versionen av PowerShell för ditt operativsystem, modulen GuestConfiguration och modulen PSDesiredStateConfiguration .

Skapa en konfiguration

Innan du skapar ett konfigurationspaket skapar och kompilerar du en DSC-konfiguration. Exempelkonfigurationer är tillgängliga för Windows och Linux.

Viktigt!

När du kompilerar konfigurationer för Windows använder du PSDesiredStateConfiguration version 2.0.7 (den stabila versionen). När du kompilerar konfigurationer för Linux installerar du förhandsversionen av version 3.0.0.

Det här exemplet är för Windows-datorer. Den konfigurerar datorn för att skapa MC_ENV_EXAMPLE miljövariabeln i omfången Process och Machine . Värdet för variabeln anger till '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

Med den definitionen sparad i MyConfig.ps1 skriptfilen kan du köra skriptet för att kompilera konfigurationen.

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

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

Konfigurationen kompileras till localhost.mof filen i MyConfig mappen i den aktuella arbetskatalogen. Byt localhost.mof namn på det namn som du vill använda som paketnamn, till exempel 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

Kommentar

Det här exemplet visar hur du skapar och kompilerar en konfiguration för en Windows-dator. För Linux måste du skapa en anpassad DSC-resursmodul med hjälp av PowerShell-klasser. Artikeln Skriva en anpassad DSC-resurs med PowerShell-klasser innehåller ett fullständigt exempel på en anpassad resurs och konfiguration, testad med datorkonfiguration.

Resten av den här artikeln gäller för konfigurationer som definierats för Linux- och Windows-datorer, förutom där det nämns plattformsspecifika överväganden.

Skapa en artefakt för konfigurationspaket

När MOF har kompilerats måste stödfilerna paketeras tillsammans. Det färdiga paketet används av datorkonfigurationen för att skapa Azure Policy-definitionerna.

Cmdleten New-GuestConfigurationPackage skapar paketet. Moduler som krävs av konfigurationen måste vara tillgängliga i $Env:PSModulePath för utvecklingsmiljön så att kommandona i modulen kan lägga till dem i paketet.

Parametrar för cmdleten New-GuestConfigurationPackage när du skapar Windows-innehåll:

  • Namn: namn på datorkonfigurationspaket.
  • Konfiguration: Fullständig sökväg för kompilerat DSC-konfigurationsdokument.
  • Sökväg: Mappsökväg för utdata. Den här parametern är valfri. Om det inte anges skapas paketet i den aktuella katalogen.
  • Typ: (Audit, AuditandSet) Avgör om konfigurationen bara ska granska eller om konfigurationen ska ändra datorns tillstånd om den inte är i önskat tillstånd. Standardvärdet är Audit.

Det här steget kräver inte utökade privilegier. Force-parametern används för att skriva över befintliga paket om du kör kommandot mer än en gång.

Följande kommandon skapar en paketartefakt:

# 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

Ett objekt returneras med namn och sökväg för det skapade paketet.

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

Förväntat innehåll i en maskinkonfigurationsartefakt

Det färdiga paketet används av datorkonfigurationen för att skapa Azure Policy-definitionerna. Paketet består av:

  • Den kompilerade DSC-konfigurationen som en MOF
  • Mappen Moduler
    • GuestConfiguration-modul
    • DscNativeResources-modul
    • DSC-resursmoduler som krävs av MOF
  • En metakonfigurationsfil som lagrar paketet type och version

PowerShell-cmdleten skapar paketfilen .zip . Ingen mapp på rotnivå eller versionsmapp krävs. Paketformatet måste vara en .zip fil och får inte överstiga en total storlek på 100 MB när det inte är komprimerat.

Du kan expandera arkivet för att inspektera det med hjälp av cmdleten Expand-Archive .

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

Du kan få den totala storleken på det okomprimerade paketet med PowerShell.

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

Utöka datorkonfigurationen med verktyg från tredje part

Artefaktpaketen för maskinkonfiguration kan utökas till att omfatta verktyg från tredje part. För att utöka datorkonfigurationen krävs utveckling av två komponenter.

  • En desired State Configuration-resurs som hanterar all aktivitet som rör hantering av verktyget från tredje part
    • Installera
    • Anropa
    • Konvertera utdata
  • Innehåll i rätt format för verktyget som ska användas internt

DSC-resursen kräver anpassad utveckling om det inte redan finns någon community-lösning. Community-lösningar kan identifieras genom att söka i PowerShell-galleriet efter taggen GuestConfiguration.

Kommentar

Utökningsbarhet för datorkonfiguration är ett scenario med "bring your own license". Se till att du uppfyller villkoren för alla verktyg från tredje part innan du använder dem.

När DSC-resursen har installerats i utvecklingsmiljön använder du parametern FilesToInclude för för New-GuestConfigurationPackage att inkludera innehåll för plattformen från tredje part i innehållsartefakten.

Gå vidare