Kompilera DSC-konfigurationer i Azure Automation State Configuration
Anteckning
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 Desired State Configuration-konfigurationer (DSC) i Azure Automation State Configuration på följande sätt:
Azure State Configuration kompileringstjänst
- 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ättringar
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ägg med Azure Resource Manager-mallar.
Kompilera en DSC-konfiguration i Azure State Configuration
Portalen
- I ditt Automation-konto klickar du på State Configuration (DSC).
- Klicka på fliken Konfigurationer och klicka sedan på konfigurationsnamnet som ska kompileras.
- Klicka på Kompilera.
- 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.
- Sidan Kompileringsjobb öppnas så att du kan spåra kompileringsjobbets status. Du kan också använda den här sidan för att spåra nodkonfigurationerna (MOF-konfigurationsdokument) som placerats 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 sina 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
parametrarna och IsPresent
för att fastställa värdena för egenskaperna 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.
Azure PowerShell
PowerShell kräver parametrar i en hash-tabell, 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 Autentiseringstillgångar.
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. Den här funktionen gör det möjligt att tillämpa flera konfigurationer på en enda resurs. Mer information om sammansatta resurser finns i Sammansatta resurser: Använda en DSC-konfiguration som en resurs .
Anteckning
Så att konfigurationer som innehåller sammansatta resurser kompileras korrekt, måste du först importera till Azure Automation alla DSC-resurser som kompositerna förlitar sig på. Att lägga till en DSC-sammansatt resurs skiljer sig inte från att lägga till powershell-moduler 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 strukturella konfigurationer 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.
Anteckning
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änder ConfigurationData
DSC-konfigurationen via nyckelorden $ConfigurationData
och $AllNodes
. Du behöver också xWebAdministration-modulen 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 Azure Automation State Configuration pull-tjänsten: 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 Automation-autentiseringstillgångar med hjälp av cmdleten Get-AutomationPSCredential
. Om en konfiguration har en parameter som anger ett PSCredential
-objekt använder Get-AutomationPSCredential
du genom att skicka strängnamnet för en Azure Automation autentiseringsuppgiftstillgå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 autentiseringsuppgiftstillgång 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 nodkonfigurationens MOF-fil. 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 är inte medveten om 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 autentiseringsuppgifter 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
Anteckning
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 DSC-konfigurationen 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 utvecklararbetsstation eller i en tjänst som Azure DevOps. Den här metoden har flera fördelar, inklusive prestanda och tillförlitlighet.
Anteckning
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 – Signera konfiguration och modul.
Importera en nodkonfiguration i Azure Portal
I ditt Automation-konto klickar du på Tillståndskonfiguration (DSC) under Konfigurationshantering.
På sidan Tillståndskonfiguration (DSC) klickar du på fliken Konfigurationer och klickar sedan på Lägg till.
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.
Ange ett namn i fältet Konfigurationsnamn . Det här namnet måste matcha namnet på konfigurationen som nodkonfigurationen kompilerades från.
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
- Kom igång genom att läsa Komma igång med Azure Automation State Configuration.
- Mer information om hur du kompilerar DSC-konfigurationer så att du kan tilldela dem till målnoder finns i Kompilera DSC-konfigurationer i Azure Automation State Configuration.
- En PowerShell-cmdlet-referens finns i Az.Automation.
- Prisinformation finns i Azure Automation State Configuration prissättning.
- Ett exempel på hur du använder State Configuration i en pipeline för kontinuerlig distribution finns i Konfigurera kontinuerlig distribution med Chocolatey.