Compilare configurazioni DSC in Configurazione stato di Automazione di Azure

È 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 fare clic su State Configuration (DSC) .
  2. Fare clic sulla scheda Configurazioni e quindi selezionare il nome della configurazione da compilare.
  3. Fare clic su Compila.
  4. Se la configurazione non ha alcun parametro, verrà richiesto di confermare se compilarla. Se la configurazione contiene parametri, verrà aperto il pannello Compila configurazione in cui sarà 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 che venga completata 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 dei runbook, vedere Avvio di un Runbook in Automazione di Azure .

Nell'esempio seguente vengono utilizzati i parametri e per determinare i valori delle proprietà nella configurazione del nodo FeatureNameIsPresentFeatureName generata 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 PSCredential di oggetti come parametri, vedere Asset PSCredential

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 per ottenere altre informazioni sulle risorse composite.

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 del 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 argomenti seguenti:

Asset di credenziali

Le configurazioni DSC in Automazione di Azure possono fare riferimento agli asset credenziali di Automazione con il cmdlet Get-AutomationPSCredential. Se una configurazione ha un parametro che specifica un oggetto PSCredential, usare Get-AutomationPSCredential passando il nome di stringa di un asset di credenziali di Automazione di Azure al cmdlet per recuperare le credenziali. Usare quindi tale oggetto per il parametro che richiede l'oggetto PSCredential. In background, l'asset credenziali di Automazione di Azure con tale nome viene recuperato e passato alla configurazione. L'esempio seguente illustra il funzionamento di questo scenario.

Per garantire la sicurezza delle credenziali nelle configurazioni dei nodi (documenti di configurazione MOF), è necessario crittografare le credenziali nel file MOF delle configurazioni dei nodi. È attualmente necessario fornire a PowerShell DSC l'autorizzazione per restituire come output le credenziali in testo normale durante la generazione del file MOF della configurazione del nodo. PowerShell DSC non è consapevole del fatto che Automazione di Azure crittografa l'intero file MOF dopo la rispettiva generazione tramite un processo di compilazione.

Per comunicare a PowerShell DSC che l'output delle credenziali in testo normale nei file MOF delle configurazioni dei nodi generati è corretto, è possibile usare ConfigurationData. È 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.

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 di nodo (file MOF) 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 State Configuration (DSC) in Gestione della configurazione.

  2. Nella pagina State Configuration (DSC) fare clic sulla scheda Configurazioni, quindi fare clic su Aggiungi.

  3. Nella pagina Importa fare clic sull'icona della cartella accanto al campo File di configurazione nodo per cercare un file MOD 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. Fare clic su 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.

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

Passaggi successivi