Condividi tramite


Compilare configurazioni DSC in Configurazione stato di Automazione di Azure

Nota

Automazione di Azure State Configuration verrà ritirato il 30 settembre 2027. Passare a Configurazione di Azure Machine entro tale data. Per altre informazioni, vedere l'annuncio del post di blog. Il servizio Configurazione macchina di Azure combina le funzionalità dell'estensione DSC, di State Configuration di Automazione di Azure e le funzionalità più comunemente richieste dai commenti e suggerimenti dei clienti. Configurazione macchina di Azure include anche il supporto del computer ibrido tramite i server abilitati per Arc.

Attenzione

Automazione di Azure DSC per Linux è stato ritirato il 30 settembre 2023. Per altre informazioni, vedere l'annuncio.

È possibile compilare configurazioni DSC (Desired State Configuration) in State Configuration di Automazione di Azure nei modi seguenti:

  • Servizio di compilazione di Azure State Configuration

    • Metodo per principianti con interfaccia utente interattiva
    • Facilità di controllo dello stato dei processi
  • Windows PowerShell

    • Chiamata da Windows PowerShell nella workstation locale o nel servizio di compilazione
    • Integrazione con la pipeline di testo per lo sviluppo
    • Fornitura di valori di parametri complessi
    • Uso di dati di nodi e non di nodi su larga scala
    • Miglioramento significativo delle prestazioni

È anche possibile usare i modelli di Azure Resource Manager con l'estensione Azure Desired State Configuration (DSC) per eseguire il push di configurazioni nelle macchine virtuali di Azure. L'estensione DSC di Azure usa il framework dell'agente VM di Azure per recapitare, applicare e generare report sulle configurazioni DSC in esecuzione nelle VM di Azure. Per dettagli sulla compilazione con i modelli di Azure Resource Manager, vedere Estensione Desired State Configuration con modelli di Azure Resource Manager.

Compilare una configurazione DSC in Azure State Configuration

Portale

  1. Nell'account di Automazione selezionare State configuration (DSC).
  2. Selezionare nella scheda Configurazioni e quindi selezionare il nome della configurazione da compilare.
  3. Selezionare Compila.
  4. Se la configurazione non ha alcun parametro, verrà richiesto di confermare se compilarla. Se la configurazione include parametri, viene aperto il riquadro Configurazione compilazione in modo che sia possibile specificare i valori dei parametri.
  5. Verrà aperta la pagina Processo di compilazione che consente di tenere traccia dello stato dei processi di compilazione. È anche possibile usare questa pagina per tenere traccia delle configurazioni dei nodi (documenti di configurazione MOF) inserite nel server di pull di State Configuration di Automazione di Azure.

Azure PowerShell

È possibile usare Start-AzAutomationDscCompilationJob per avviare la compilazione con Windows PowerShell. Il codice di esempio seguente avvia la compilazione di una configurazione DSC denominata SampleConfig.

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

Start-AzAutomationDscCompilationJob restituisce un oggetto processo di compilazione che è possibile usare per tenere traccia dello stato del processo. È quindi possibile usare questo oggetto processo di compilazione con Get-AzAutomationDscCompilationJob per determinare lo stato del processo di compilazione e Get-AzAutomationDscCompilationJobOutput per visualizzare i rispettivi flussi (output). L'esempio seguente avvia la compilazione della configurazione SampleConfig, attende il completamento e quindi ne visualizza i flussi.

$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

Dichiarare i parametri di base

La dichiarazione dei parametri nelle configurazioni DSC, inclusi i tipi e le proprietà dei parametri, funziona esattamente come nei runbook di Automazione di Azure. Per altre informazioni sui parametri del runbook, vedere Avvio di un runbook in Automazione di Azure.

L'esempio seguente usa i parametri FeatureName e IsPresent per determinare i valori delle proprietà nella configurazione del nodo ParametersExample.sample, generato durante la compilazione.

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

È possibile compilare configurazioni DSC che usano parametri di base nel portale di State Configuration di Automazione di Azure o con Azure PowerShell.

Portale

Nel portale è possibile immettere i valori dei parametri dopo avere fatto clic su Compila.

Parametri per la compilazione della configurazione

Azure PowerShell

PowerShell richiede i parametri in un elemento hashtable dove la chiave corrisponde al nome del parametro e il valore è uguale al valore del parametro.

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

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

Per informazioni sul passaggio di oggetti PSCredential come parametri, vedere Asset di credenziali.

Compilare configurazioni contenenti risorse composite in Automazione di Azure

La funzionalità Risorse composite consente di usare le configurazioni DSC come risorse annidate in una configurazione. Questa funzionalità consente l'applicazione di più configurazioni a una singola risorsa. Per informazioni sulle risorse composite, vedere Risorse composite: uso di una configurazione DSC come risorsa.

Nota

Per consentire la compilazione corretta delle configurazioni che contengono risorse composite, è prima di tutto necessario importare in Automazione di Azure eventuali risorse DSC su cui si basano le risorse composite. L'aggiunta di una risorsa composita di DSC non è diversa dall'aggiunta di un modulo di PowerShell in Automazione di Azure. Questo processo è documentato in Gestire i moduli in Automazione di Azure.

Gestire ConfigurationData durante la compilazione di configurazioni in Automazione di Azure

ConfigurationData è un parametro di DSC predefinito che consente di separare la configurazione strutturale dalla configurazione specifica di qualsiasi ambiente mentre si usa PowerShell DSC. Per altre informazioni, vedere Separazione di "cosa" da "dove" in PowerShell DSC.

Nota

Durante la compilazione di State Configuration di Automazione di Azure è possibile usare ConfigurationData in Azure PowerShell ma non nel portale di Azure.

L'esempio seguente di configurazione DSC usa ConfigurationData tramite le parole chiave $ConfigurationData e $AllNodes. Per questo esempio è necessario anche il modulo xWebAdministration.

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

È possibile compilare la configurazione DSC precedente con Windows PowerShell. Lo script seguente aggiunge due configurazioni di nodo al server di pull di State Configuration di Automazione di Azure, ConfigurationDataSample.MyVM1 e 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

Usare asset in Automazione di Azure durante la compilazione

I riferimenti agli asset sono gli stessi in State Configuration di Automazione di Azure e nei runbook. Per altre informazioni, vedere gli articoli seguenti:

Asset di credenziali

Se una configurazione ha un parametro che specifica un PSCredential oggetto , usare Get-AutomationPSCredential passando il nome di un asset di credenziali Automazione di Azure al cmdlet per recuperare le credenziali. Automazione di Azure passa le credenziali alla configurazione.

Per proteggere le credenziali nelle configurazioni dei nodi, crittografare le credenziali nel file MOF di configurazione del nodo. È necessario concedere a PowerShell DSC l'autorizzazione per l'output delle credenziali in testo normale durante la generazione MOF della configurazione del nodo. PowerShell DSC non sa che Automazione di Azure crittografa l'intero file MOF dopo che è stato generato da un processo di compilazione.

È possibile indicare a PowerShell DSC che le credenziali devono essere restituite in testo normale nei file MOF di configurazione del nodo generato usando i dati di configurazione. È consigliabile passare PSDscAllowPlainTextPassword = $true tramite ConfigurationData per il nome di ogni blocco di nodi visualizzato nella configurazione DSC che usa le credenziali.

L'esempio seguente mostra una configurazione DSC che usa un asset credenziali di Automazione.

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

È possibile compilare la configurazione DSC precedente con PowerShell. Il codice di PowerShell seguente aggiunge due configurazioni del nodo al server di pull di State Configuration di Automazione di Azure, CredentialSample.MyVM1 e CredentialSample.MyVM2.

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

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

Nota

Al termine della compilazione, è possibile che venga visualizzato il messaggio di errore The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. È possibile ignorare questo messaggio in modo sicuro.

Compilare la configurazione DSC in Windows PowerShell

Il processo di compilazione delle configurazioni DSC in Windows PowerShell è incluso nella documentazione di PowerShell DSC in Scrivere, compilare e applicare una configurazione. È possibile eseguire questo processo da una workstation per sviluppatori o in un servizio di compilazione, ad esempio Azure DevOps. È quindi possibile importare i file MOF prodotti compilando la configurazione nel servizio Azure State Configuration.

La compilazione in Windows PowerShell offre anche la possibilità di firmare il contenuto della configurazione. L'agente DSC verifica la configurazione di un nodo firmata in locale in un nodo gestito. La verifica consente di assicurare che la configurazione applicata al nodo provenga da un'origine autorizzata.

È anche possibile importare configurazioni dei nodi compilate all'esterno di Azure. L'importazione include la compilazione da una workstation per sviluppatori o in un servizio quale Azure DevOps. Questo approccio offre molti vantaggi, tra cui prestazioni e affidabilità.

Nota

Il file di configurazione del nodo deve essere superiore a 1 MB per consentire l'importazione in Automazione di Azure.

Per altre informazioni su come firmare le configurazioni del nodo, vedere Miglioramenti in WMF 5.1: come firmare la configurazione e il modulo.

Importare una configurazione del nodo nel portale di Azure

  1. Nell'account di Automazione selezionare Configurazione stato (DSC) in Gestione configurazione.

  2. Nella pagina Configurazione stato (DSC) selezionare nella scheda Configurazioni e quindi selezionare Aggiungi.

  3. Nella pagina Importa selezionare l'icona della cartella accanto al campo File di configurazione del nodo per cercare un file MOF di configurazione del nodo nel computer locale.

    Cercare il file locale

  4. Immettere un nome nel campo Nome configurazione. Il nome deve corrispondere al nome della configurazione da cui è stata compilata la configurazione del nodo.

  5. Seleziona OK.

Importare una configurazione del nodo con Azure PowerShell

È possibile usare il cmdlet Import-AzAutomationDscNodeConfiguration per importare una configurazione del nodo nell'account di Automazione.

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

Passaggi successivi