DSC-configuraties compileren in Azure Automation State Configuration

Notitie

Voordat u Automation State Configuration inschakelt, willen we graag weten dat een nieuwere versie van DSC nu algemeen beschikbaar is, beheerd door een functie van Azure Policy met de naam gastconfiguratie. De gastconfiguratieservice combineert functies van DSC-extensie, Azure Automation State Configuration en de meest aangevraagde functies uit feedback van klanten. Gastconfiguratie omvat ook ondersteuning voor hybride machines via servers met Arc.

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. Klik in uw Automation-account op State Configuration (DSC).
  2. Klik op het tabblad Configuraties en klik vervolgens op de configuratienaam die u wilt compileren .
  3. Klik op 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 de blade Compile Configuration 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.

Configuration compile parameters

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 xWeb Beheer istration 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 de volgende artikelen voor meer informatie:

Referentieassets

DSC-configuraties in Azure Automation kunnen verwijzen naar Automation-referentieassets met behulp van de Get-AutomationPSCredential cmdlet. Als een configuratie een parameter bevat waarmee een PSCredential object wordt opgegeven, gebruikt Get-AutomationPSCredential u deze door de tekenreeksnaam van een Azure Automation-referentieasset door te geven aan de cmdlet om de referentie op te halen. Maak vervolgens gebruik van dat object voor de parameter waarvoor het PSCredential object is vereist. Achter de schermen wordt de Azure Automation-referentieasset met die naam opgehaald en doorgegeven aan de configuratie. In het onderstaande voorbeeld ziet u dit scenario in actie.

Het beveiligen van referenties in knooppuntconfiguraties (MOF-configuratiedocumenten) vereist het versleutelen van de referenties in het MOF-bestand van de knooppuntconfiguratie. Op dit moment moet u PowerShell DSC toestemming geven voor uitvoerreferenties in tekst zonder opmaak tijdens het genereren van MOF-knooppuntconfiguratie. PowerShell DSC is niet op de hoogte dat Azure Automation het hele MOF-bestand na de generatie versleutelt via 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 = $trueConfigurationData 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 The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. weergegeven dat u dit bericht veilig kunt 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 (MOF-bestanden) 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. Klik in uw Automation-account op State Configuration (DSC) onder Configuratiebeheer.

  2. Klik op de pagina Statusconfiguratie (DSC) op het tabblad Configuraties en klik vervolgens op Toevoegen.

  3. Klik op de pagina Importeren op het mappictogram naast het veld Knooppuntconfiguratiebestand om te bladeren naar een MOF-knooppuntconfiguratiebestand op uw lokale computer.

    Browse for local file

  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. Klik op OK.

Een knooppuntconfiguratie importeren met Azure PowerShell

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

Import-AzAutomationDscNodeConfiguration -AutomationAccountName 'MyAutomationAccount' -ResourceGroupName 'MyResourceGroup' -ConfigurationName 'MyNodeConfiguration' -Path 'C:\MyConfigurations\TestVM1.mof'

Volgende stappen