Dela via


Kompilera DSC-konfigurationer i Azure Automation State Configuration

Kommentar

Azure Automation State Configuration tas ur bruk den 30 september 2027. Övergå till Azure Machine Configuration senast det datumet. Mer information finns i blogginlägget. Azure Machine Configuration-tjänsten kombinerar funktioner i DSC-tillägget, Azure Automation State Configuration och de vanligaste funktionerna från kundfeedback. Azure Machine Configuration innehåller ä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 väljer du Tillståndskonfiguration (DSC).
  2. Välj på fliken Konfigurationer och välj sedan det konfigurationsnamn som ska kompileras.
  3. Välj Kompilera.
  4. Om konfigurationen inte har några parametrar uppmanas du att bekräfta om du vill kompilera den. Om konfigurationen har parametrar öppnas fönstret 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.

Kompileringsparametrar för konfiguration

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 Portal.

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 artiklar:

Tillgångar för autentiseringsuppgifter

Om en konfiguration har en parameter som anger ett PSCredential objekt använder du Get-AutomationPSCredential genom att skicka namnet på en Azure Automation-autentiseringstillgång till cmdleten för att hämta autentiseringsuppgifterna. Azure Automation skickar autentiseringsuppgifterna till konfigurationen.

Om du vill skydda autentiseringsuppgifterna i nodkonfigurationer krypterar du autentiseringsuppgifterna i MOF-filen för nodkonfiguration. Du måste ge PowerShell DSC behörighet att mata ut autentiseringsuppgifter i oformaterad text under MOF-generering av nodkonfiguration. PowerShell DSC är inte medveten om att Azure Automation krypterar hela MOF-filen efter att den har genererats av ett kompileringsjobb.

Du kan berätta för PowerShell DSC att det är okej att autentiseringsuppgifterna matas ut i oformaterad text i den genererade nodkonfigurationens MOF:er 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 som 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 Portal

  1. I ditt Automation-konto väljer du Tillståndskonfiguration (DSC) under Konfigurationshantering.

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

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

    Bläddra efter lokal fil

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

  5. Välj OK.

Importera en nodkonfiguration med Azure PowerShell

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

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

Nästa steg