Kompilera DSC-konfigurationer i Azure Automation State Configuration

Kommentar

Innan du aktiverar Automation State Configuration vill vi att du ska veta att en nyare version av DSC nu är allmänt tillgänglig, som hanteras av en funktion i Azure Policy med namnet gästkonfiguration. Gästkonfigurationstjänsten kombinerar funktioner i DSC-tillägget, Azure Automation State Configuration och de vanligaste funktionerna från kundfeedback. Gästkonfigurationen omfattar även stöd för hybriddatorer via Arc-aktiverade servrar.

Du kan kompilera DSC-konfigurationer (Desired State Configuration) i Azure Automation State Configuration på följande sätt:

  • Kompileringstjänst för Azure State Configuration

    • Nybörjarmetod med interaktivt användargränssnitt
    • Spåra enkelt jobbtillstånd
  • Windows PowerShell

    • Anropa från Windows PowerShell på den lokala arbetsstationen eller byggtjänsten
    • Integrera med pipeline för utvecklingstest
    • Ange komplexa parametervärden
    • Arbeta med nod- och icke-noddata i stor skala
    • Betydande prestandaförbättring

Du kan också använda Azure Resource Manager-mallar med Azure Desired State Configuration-tillägget (DSC) för att skicka konfigurationer till dina virtuella Azure-datorer. Azure DSC-tillägget använder Azure VM Agent-ramverket för att leverera, anta och rapportera om DSC-konfigurationer som körs på virtuella Azure-datorer. Kompileringsinformation med hjälp av Azure Resource Manager-mallar finns i Desired State Configuration-tillägget med Azure Resource Manager-mallar.

Kompilera en DSC-konfiguration i Azure State Configuration

Portalen

  1. I ditt Automation-konto klickar du på Tillståndskonfiguration (DSC).
  2. Klicka på fliken Konfigurationer och klicka sedan på konfigurationsnamnet för att kompilera.
  3. Klicka på Kompilera.
  4. Om konfigurationen inte har några parametrar uppmanas du att bekräfta om du vill kompilera den. Om konfigurationen har parametrar öppnas bladet Kompileringskonfiguration så att du kan ange parametervärden.
  5. Sidan Kompileringsjobb öppnas så att du kan spåra status för kompileringsjobb. Du kan också använda den här sidan för att spåra nodkonfigurationerna (MOF-konfigurationsdokument) som placeras på Azure Automation State Configuration-hämtningsservern.

Azure PowerShell

Du kan använda Start-AzAutomationDscCompilationJob för att börja kompilera med Windows PowerShell. Följande exempelkod börjar kompileringen av en DSC-konfiguration med namnet SampleConfig.

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

Start-AzAutomationDscCompilationJob returnerar ett kompileringsjobbobjekt som du kan använda för att spåra jobbstatus. Du kan sedan använda det här kompileringsjobbobjektet med Get-AzAutomationDscCompilationJob för att fastställa status för kompileringsjobbet och Get-AzAutomationDscCompilationJobOutput för att visa dess strömmar (utdata). Följande exempel startar kompileringen av SampleConfig-konfigurationen, väntar tills den har slutförts och visar sedan dess strömmar.

$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

Deklarera grundläggande parametrar

Parameterdeklaration i DSC-konfigurationer, inklusive parametertyper och egenskaper, fungerar på samma sätt som i Azure Automation-runbooks. Mer information om runbook-parametrar finns i Starta en runbook i Azure Automation .

I följande exempel används FeatureName och IsPresent parametrar för att fastställa egenskapernas värden i nodkonfigurationen ParametersExample.sample som genererades under kompileringen.

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
        }
    }
}

Du kan kompilera DSC-konfigurationer som använder grundläggande parametrar i Azure Automation State Configuration-portalen eller med Azure PowerShell.

Portalen

I portalen kan du ange parametervärden när du har klickat på Kompilera.

Configuration compile parameters

Azure PowerShell

PowerShell kräver parametrar i en hashtable, där nyckeln matchar parameternamnet och värdet är lika med parametervärdet.

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

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

Information om hur du skickar PSCredential objekt som parametrar finns i Tillgångar för autentiseringsuppgifter.

Kompilera konfigurationer som innehåller sammansatta resurser i Azure Automation

Med funktionen Sammansatta resurser kan du använda DSC-konfigurationer som kapslade resurser i en konfiguration. Med den här funktionen kan du använda flera konfigurationer för en enskild resurs. Se Sammansatta resurser: Använda en DSC-konfiguration som en resurs för att lära dig mer om sammansatta resurser.

Kommentar

Så att konfigurationer som innehåller sammansatta resurser kompileras korrekt måste du först importera alla DSC-resurser som kompositerna förlitar sig på till Azure Automation. Att lägga till en DSC-sammansatt resurs skiljer sig inte från att lägga till en PowerShell-modul i Azure Automation. Den här processen dokumenteras i Hantera moduler i Azure Automation.

Hantera ConfigurationData vid kompilering av konfigurationer i Azure Automation

ConfigurationData är en inbyggd DSC-parameter som gör att du kan separera strukturell konfiguration från alla miljöspecifika konfigurationer när du använder PowerShell DSC. Mer information finns i Separera "Vad" från "Var" i PowerShell DSC.

Kommentar

När du kompilerar i Azure Automation State Configuration kan du använda ConfigurationData i Azure PowerShell men inte i Azure-portalen.

I följande exempel används ConfigurationData DSC-konfiguration via nyckelorden $ConfigurationData och $AllNodes . Du behöver också modulen xWebAdministration för det här exemplet.

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'
        }
    }
}

Du kan kompilera den föregående DSC-konfigurationen med Windows PowerShell. Följande skript lägger till två nodkonfigurationer i pull-tjänsten Azure Automation State Configuration: ConfigurationDataSample.MyVM1 och 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

Arbeta med tillgångar i Azure Automation under kompilering

Tillgångsreferenser är desamma i både Azure Automation State Configuration och runbooks. Mer information finns i följande:

Tillgångar för autentiseringsuppgifter

DSC-konfigurationer i Azure Automation kan referera till automationstillgångar för autentiseringsuppgifter med hjälp av cmdleten Get-AutomationPSCredential . Om en konfiguration har en parameter som anger ett PSCredential objekt använder du Get-AutomationPSCredential genom att skicka strängnamnet för en Azure Automation-autentiseringstillgång till cmdleten för att hämta autentiseringsuppgifterna. Använd sedan objektet för parametern som kräver PSCredential objektet. I bakgrunden hämtas Azure Automation-autentiseringstillgången med det namnet och skickas till konfigurationen. Exemplet nedan visar det här scenariot i praktiken.

För att skydda autentiseringsuppgifterna i nodkonfigurationer (MOF-konfigurationsdokument) krävs kryptering av autentiseringsuppgifterna i MOF-filen för nodkonfiguration. För närvarande måste du ge PowerShell DSC behörighet att mata ut autentiseringsuppgifter i oformaterad text under MOF-generering av nodkonfiguration. PowerShell DSC vet inte att Azure Automation krypterar hela MOF-filen efter genereringen via ett kompileringsjobb.

Du kan berätta för PowerShell DSC att det är okej att autentiseringsuppgifterna matas ut i oformaterad text i mofs för den genererade nodkonfigurationen med hjälp av konfigurationsdata. Du bör skicka PSDscAllowPlainTextPassword = $true via ConfigurationData för varje nodblocknamn som visas i DSC-konfigurationen och använder autentiseringsuppgifter.

I följande exempel visas en DSC-konfiguration som använder en Automation-autentiseringstillgång.

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
        }
    }
}

Du kan kompilera den föregående DSC-konfigurationen med PowerShell. Följande PowerShell-kod lägger till två nodkonfigurationer till Azure Automation State Configuration-hämtningsservern: CredentialSample.MyVM1 och CredentialSample.MyVM2.

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

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

Kommentar

När kompilering är klar kan du få felmeddelandet The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Du kan ignorera det här meddelandet på ett säkert sätt.

Kompilera din DSC-konfiguration i Windows PowerShell

Processen för att kompilera DSC-konfigurationer i Windows PowerShell ingår i PowerShell DSC-dokumentationen Skriva, kompilera och tillämpa en konfiguration. Du kan köra den här processen från en utvecklararbetsstation eller i en byggtjänst, till exempel Azure DevOps. Du kan sedan importera MOF-filerna som skapas genom att kompilera konfigurationen till Azure State Configuration-tjänsten.

Kompilering i Windows PowerShell ger också möjlighet att signera konfigurationsinnehåll. DSC-agenten verifierar en signerad nodkonfiguration lokalt på en hanterad nod. Verifiering säkerställer att konfigurationen som tillämpas på noden kommer från en auktoriserad källa.

Du kan också importera nodkonfigurationer (MOF-filer) som har kompilerats utanför Azure. Importen innehåller kompilering från en arbetsstation för utvecklare eller i en tjänst, till exempel Azure DevOps. Den här metoden har flera fördelar, inklusive prestanda och tillförlitlighet.

Kommentar

En nodkonfigurationsfil får inte vara större än 1 MB för att Azure Automation ska kunna importera den.

Mer information om signering av nodkonfigurationer finns i Förbättringar i WMF 5.1 – Så här signerar du konfiguration och modul.

Importera en nodkonfiguration i Azure-portalen

  1. I ditt Automation-konto klickar du på Tillståndskonfiguration (DSC) under Konfigurationshantering.

  2. På sidan Tillståndskonfiguration (DSC) klickar du på fliken Konfigurationer och klickar sedan på Lägg till.

  3. På sidan Importera klickar du på mappikonen bredvid fältet Nodkonfigurationsfil för att söka efter en MOF-fil för nodkonfiguration på den lokala datorn.

    Browse for local file

  4. Ange ett namn i fältet Konfigurationsnamn . Det här namnet måste matcha namnet på konfigurationen som nodkonfigurationen kompilerades från.

  5. Klicka på OK.

Importera en nodkonfiguration med Azure PowerShell

Du kan använda cmdleten Import-AzAutomationDscNodeConfiguration för att importera en nodkonfiguration till ditt Automation-konto.

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

Nästa steg