Delen via


DSC-configuraties compileren in Azure Automation State Configuration

Notitie

Azure Automation State Configuration wordt op 30 september 2027 buiten gebruik gesteld. Stap op die datum over naar Azure Machine Configuration . Zie de aankondiging van het blogbericht voor meer informatie. De Azure Machine Configuration-service combineert functies van DSC-extensie, Azure Automation State Configuration en de meest aangevraagde functies uit feedback van klanten. Azure Machine Configuration omvat ook ondersteuning voor hybride machines via servers met Arc.

Let op

Azure Automation DSC voor Linux is op 30 september 2023 buiten gebruik gesteld. Zie de aankondiging voor meer informatie.

U kunt DSC-configuraties (Desired State Configuration) compileren in Azure Automation State Configuration op de volgende manieren:

  • Compilatieservice van Azure State Configuration

    • Beginnersmethode met interactieve gebruikersinterface
    • Taakstatus eenvoudig bijhouden
  • Windows PowerShell

    • Aanroepen vanuit Windows PowerShell op lokaal werkstation of buildservice
    • Integreren met ontwikkelingstestpijplijn
    • Geef complexe parameterwaarden op
    • Werken met knooppunt- en niet-knooppuntgegevens op schaal
    • Aanzienlijke prestatieverbetering

U kunt ook Azure Resource Manager-sjablonen gebruiken met de DSC-extensie (Desired State Configuration) om configuraties naar uw Azure-VM's te pushen. De Azure DSC-extensie maakt gebruik van het Azure VM Agent-framework voor het leveren, uitvoeren en rapporteren van DSC-configuraties die worden uitgevoerd op Azure-VM's. Zie de Desired State Configuration-extensie met Azure Resource Manager-sjablonen voor compilatiedetails met behulp van Azure Resource Manager-sjablonen.

Een DSC-configuratie compileren in Azure State Configuration

Portal

  1. Selecteer State Configuration (DSC) in uw Automation-account.
  2. Selecteer op het tabblad Configuraties en selecteer vervolgens de configuratienaam die u wilt compileren .
  3. Selecteer Compileren.
  4. Als de configuratie geen parameters heeft, wordt u gevraagd om te bevestigen of u deze wilt compileren. Als de configuratie parameters bevat, wordt het deelvenster Configuratie compileren geopend, zodat u parameterwaarden kunt opgeven.
  5. De pagina Compilatietaak wordt geopend, zodat u de status van compilatietaak kunt bijhouden. U kunt deze pagina ook gebruiken om de knooppuntconfiguraties (MOF-configuratiedocumenten) bij te houden die zijn geplaatst op de Pull-server van Azure Automation State Configuration.

Azure PowerShell

U kunt Start-AzAutomationDscCompilationJob gebruiken om te beginnen met compileren met Windows PowerShell. De volgende voorbeeldcode begint met het compileren van een DSC-configuratie met de naam SampleConfig.

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

Start-AzAutomationDscCompilationJob retourneert een compilatietaakobject dat u kunt gebruiken om de taakstatus bij te houden. U kunt dit compilatietaakobject vervolgens gebruiken met Get-AzAutomationDscCompilationJob om de status van de compilatietaak te bepalen en Get-AzAutomationDscCompilationJobOutput om de streams (uitvoer) te bekijken. In het volgende voorbeeld wordt de compilatie van de SampleConfig-configuratie gestart, wordt gewacht totdat deze is voltooid en worden de streams vervolgens weergegeven.

$CompilationJob = Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

while($null -eq $CompilationJob.EndTime -and $null -eq $CompilationJob.Exception)
{
    $CompilationJob = $CompilationJob | Get-AzAutomationDscCompilationJob
    Start-Sleep -Seconds 3
}

$CompilationJob | Get-AzAutomationDscCompilationJobOutput –Stream Any

Basisparameters declareren

Parameterdeclaratie in DSC-configuraties, inclusief parametertypen en eigenschappen, werkt hetzelfde als in Azure Automation-runbooks. Zie Een runbook starten in Azure Automation voor meer informatie over runbookparameters.

In het volgende voorbeeld worden FeatureName en parameters gebruikt en IsPresent parameters om de waarden van eigenschappen in de configuratie van het knooppunt ParametersExample.sample te bepalen, gegenereerd tijdens de compilatie.

Configuration ParametersExample
{
    param(
        [Parameter(Mandatory=$true)]
        [string] $FeatureName,

        [Parameter(Mandatory=$true)]
        [boolean] $IsPresent
    )

    $EnsureString = 'Present'
    if($IsPresent -eq $false)
    {
        $EnsureString = 'Absent'
    }

    Node 'sample'
    {
        WindowsFeature ($FeatureName + 'Feature')
        {
            Ensure = $EnsureString
            Name   = $FeatureName
        }
    }
}

U kunt DSC-configuraties compileren die gebruikmaken van basisparameters in de Azure Automation State Configuration-portal of met Azure PowerShell.

Portal

In de portal kunt u parameterwaarden invoeren nadat u op Compileren hebt geklikt.

Parameters voor configuratiecompilatie

Azure PowerShell

PowerShell vereist parameters in een hashtabel, waarbij de sleutel overeenkomt met de parameternaam en de waarde gelijk is aan de parameterwaarde.

$Parameters = @{
    'FeatureName' = 'Web-Server'
    'IsPresent' = $False
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters

Zie Referentieassets voor informatie over het doorgeven PSCredential van objecten als parameters.

Configuraties compileren die samengestelde resources bevatten in Azure Automation

Met de functie Samengestelde resources kunt u DSC-configuraties gebruiken als geneste resources in een configuratie. Met deze functie kunt u meerdere configuraties toepassen op één resource. Zie Samengestelde resources: Een DSC-configuratie gebruiken als een resource voor meer informatie over samengestelde resources.

Notitie

Om ervoor te zorgen dat configuraties met samengestelde resources correct worden gecompileerd, moet u eerst alle DSC-resources importeren waarop de samengestelde resources afhankelijk zijn. Het toevoegen van een samengestelde DSC-resource verschilt niet van het toevoegen van een PowerShell-module aan Azure Automation. Dit proces wordt beschreven in Modules beheren in Azure Automation.

ConfigurationData beheren bij het compileren van configuraties in Azure Automation

ConfigurationData is een ingebouwde DSC-parameter waarmee u structurele configuratie kunt scheiden van elke omgevingsspecifieke configuratie terwijl u PowerShell DSC gebruikt. Zie 'Wat' scheiden van 'Waar' in PowerShell DSC voor meer informatie.

Notitie

Bij het compileren in Azure Automation State Configuration kunt u dit gebruiken ConfigurationData in Azure PowerShell, maar niet in Azure Portal.

In het volgende voorbeeld wordt de DSC-configuratie gebruikt ConfigurationData via de $ConfigurationData trefwoorden en $AllNodes trefwoorden. U hebt ook de module xWebAdministration nodig voor dit voorbeeld.

Configuration ConfigurationDataSample
{
    Import-DscResource -ModuleName xWebAdministration -Name MSFT_xWebsite

    Write-Verbose $ConfigurationData.NonNodeData.SomeMessage

    Node $AllNodes.Where{$_.Role -eq 'WebServer'}.NodeName
    {
        xWebsite Site
        {
            Name         = $Node.SiteName
            PhysicalPath = $Node.SiteContents
            Ensure       = 'Present'
        }
    }
}

U kunt de voorgaande DSC-configuratie compileren met Windows PowerShell. Met het volgende script worden twee knooppuntconfiguraties toegevoegd aan de pull-service azure Automation State Configuration: ConfigurationDataSample.MyVM1 en ConfigurationDataSample.MyVM3.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = 'MyVM1'
            Role = 'WebServer'
        },
        @{
            NodeName = 'MyVM2'
            Role = 'SQLServer'
        },
        @{
            NodeName = 'MyVM3'
            Role = 'WebServer'
        }
    )

    NonNodeData = @{
        SomeMessage = 'I love Azure Automation State Configuration and DSC!'
    }
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ConfigurationDataSample' -ConfigurationData $ConfigData

Werken met assets in Azure Automation tijdens compilatie

Assetverwijzingen zijn hetzelfde in zowel Azure Automation State Configuration als runbooks. Raadpleeg voor meer informatie de volgende artikelen:

Referentieassets

Als een configuratie een parameter heeft waarmee een PSCredential object wordt opgegeven, gebruikt Get-AutomationPSCredential u deze door de naam van een Azure Automation-referentieasset door te geven aan de cmdlet om de referentie op te halen. Azure Automation geeft de referentie door aan de configuratie.

Als u de referenties veilig wilt houden in knooppuntconfiguraties, versleutelt u de referenties in het MOF-bestand voor de knooppuntconfiguratie. U moet PowerShell DSC toestemming geven om referenties zonder opmaak uit te voeren tijdens het genereren van MOF-knooppuntconfiguratie. PowerShell DSC is niet op de hoogte dat Azure Automation het hele MOF-bestand versleutelt nadat het is gegenereerd door een compilatietaak.

U kunt PowerShell DSC vertellen dat het geen probleem is dat referenties worden uitgevoerd in tekst zonder opmaak in de gegenereerde knooppuntconfiguratie-MOF's met behulp van configuratiegegevens. U moet doorgeven PSDscAllowPlainTextPassword = $true ConfigurationData voor elke knooppuntbloknaam die wordt weergegeven in de DSC-configuratie en referenties gebruikt.

In het volgende voorbeeld ziet u een DSC-configuratie die gebruikmaakt van een Automation-referentieasset.

Configuration CredentialSample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    $Cred = Get-AutomationPSCredential 'SomeCredentialAsset'

    Node $AllNodes.NodeName
    {
        File ExampleFile
        {
            SourcePath      = '\\Server\share\path\file.ext'
            DestinationPath = 'C:\destinationPath'
            Credential      = $Cred
        }
    }
}

U kunt de voorgaande DSC-configuratie compileren met PowerShell. Met de volgende PowerShell-code worden twee knooppuntconfiguraties toegevoegd aan de Pull-server van Azure Automation State Configuration: CredentialSample.MyVM1 en CredentialSample.MyVM2.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = '*'
            PSDscAllowPlainTextPassword = $True
        },
        @{
            NodeName = 'MyVM1'
        },
        @{
            NodeName = 'MyVM2'
        }
    )
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'CredentialSample' -ConfigurationData $ConfigData

Notitie

Wanneer de compilatie is voltooid, wordt mogelijk het foutbericht weergegeven The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. U kunt dit bericht veilig negeren.

Uw DSC-configuratie compileren in Windows PowerShell

Het proces voor het compileren van DSC-configuraties in Windows PowerShell is opgenomen in de PowerShell DSC-documentatie Voor schrijven, compileren en toepassen van een configuratie. U kunt dit proces uitvoeren vanaf een werkstation voor ontwikkelaars of binnen een buildservice, zoals Azure DevOps. Vervolgens kunt u de MOF-bestanden importeren die worden geproduceerd door de configuratie te compileren in de Azure State Configuration-service.

Compilatie in Windows PowerShell biedt ook de mogelijkheid om configuratie-inhoud te ondertekenen. De DSC-agent verifieert lokaal een ondertekende knooppuntconfiguratie op een beheerd knooppunt. Verificatie zorgt ervoor dat de configuratie die op het knooppunt wordt toegepast, afkomstig is van een geautoriseerde bron.

U kunt ook knooppuntconfiguraties importeren die buiten Azure zijn gecompileerd. Het importeren omvat compilatie van een ontwikkelaarswerkstation of in een service zoals Azure DevOps. Deze aanpak heeft meerdere voordelen, waaronder prestaties en betrouwbaarheid.

Notitie

Een knooppuntconfiguratiebestand mag niet groter zijn dan 1 MB om Azure Automation toe te staan het te importeren.

Zie Verbeteringen in WMF 5.1 - Configuratie en module ondertekenen voor meer informatie over het ondertekenen van knooppuntconfiguraties.

Een knooppuntconfiguratie importeren in Azure Portal

  1. Selecteer in uw Automation-account de optie Statusconfiguratie (DSC) onder Configuratiebeheer.

  2. Selecteer op de pagina Statusconfiguratie (DSC) op het tabblad Configuraties en selecteer vervolgens Toevoegen.

  3. Selecteer op de pagina Importeren het mappictogram naast het veld Knooppuntconfiguratiebestand om te bladeren naar een MOF-bestand voor knooppuntconfiguratie op uw lokale computer.

    Bladeren naar lokaal bestand

  4. Voer een naam in het veld Configuratienaam in. Deze naam moet overeenkomen met de naam van de configuratie waaruit de knooppuntconfiguratie is gecompileerd.

  5. Selecteer OK.

Een knooppuntconfiguratie importeren met Azure PowerShell

U kunt de cmdlet Import-AzAutomationDscNodeConfiguration gebruiken om een knooppuntconfiguratie te importeren in uw Automation-account.

$importAzAutomationDscNodeConfigurationSplat = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName = 'MyResourceGroup'
    ConfigurationName = 'MyNodeConfiguration'
    Path = 'C:\MyConfigurations\TestVM1.mof'
}
Import-AzAutomationDscNodeConfiguration @importAzAutomationDscNodeConfigurationSplat

Volgende stappen