Compilazione di configurazioni in Azure Automation DSCCompiling configurations in Azure Automation DSC

È possibile compilare configurazioni dello stato desiderato (DSC, Desired State Configuration) in due modi con Automazione di Azure: nel portale di Azure e con Windows PowerShell.You can compile Desired State Configuration (DSC) configurations in two ways with Azure Automation: in the Azure portal, and with Windows PowerShell. La tabella seguente consente di determinare quando usare ciascun metodo in base alle caratteristiche specifiche:The following table will help you determine when to use which method based on the characteristics of each:

Portale di AzureAzure portal

  • Metodo più semplice con interfaccia utente interattivaSimplest method with interactive user interface
  • Modulo per specificare valori di parametri sempliciForm to provide simple parameter values
  • Facilità di controllo dello stato dei processiEasily track job state
  • Accesso autenticato con l'accesso di AzureAccess authenticated with Azure logon

Windows PowerShellWindows PowerShell

  • Chiamata mediante cmdlet di Windows PowerShell nella riga di comandoCall from command line with Windows PowerShell cmdlets
  • Possibilità di inclusione in una soluzione automatizzata con più passaggiCan be included in automated solution with multiple steps
  • Possibilità di specificare valori di parametri semplici e complessiProvide simple and complex parameter values
  • Possibilità di controllare lo stato dei processiTrack job state
  • Obbligo per il client di supporto dei cmdlet di PowerShellClient required to support PowerShell cmdlets
  • Passaggio di ConfigurationDataPass ConfigurationData
  • Compilazione di configurazioni che usano credenzialiCompile configurations that use credentials

Una volta scelto il metodo di compilazione, è possibile seguire le rispettive procedure indicate sotto per iniziare la compilazione.Once you have decided on a compilation method, you can follow the respective procedures below to start compiling.

Compilazione di una configurazione DSC con il portale di AzureCompiling a DSC Configuration with the Azure portal

  1. Nell'account di Automazione fare clic su Configurazioni DSC.From your Automation account, click DSC Configurations.
  2. Fare clic su una configurazione per aprirne il pannello.Click a configuration to open its blade.
  3. Fare clic su Compila.Click Compile.
  4. Se la configurazione non ha alcun parametro, verrà richiesto di confermare se compilarla.If the configuration has no parameters, you will be prompted to confirm whether you want to compile it. Se la configurazione contiene parametri, verrà aperto il pannello Compila configurazione in cui sarà possibile specificare i valori dei parametri.If the configuration has parameters, the Compile Configuration blade will open so you can provide parameter values. Per altri dettagli sui parametri, vedere la sezione Parametri di base più avanti.See the Basic Parameters section below for further details on parameters.
  5. Viene aperto il pannello Processo di compilazione in cui è possibile tenere traccia dello stato del processo di compilazione e delle configurazioni dei nodi (documenti di configurazione MOF) che sono state inserite nel server di pull di Azure Automation DSC.The Compilation Job blade is opened so that you can track the compilation job's status, and the node configurations (MOF configuration documents) it caused to be placed on the Azure Automation DSC Pull Server.

Compilazione di una configurazione DSC con Windows PowerShellCompiling a DSC Configuration with Windows PowerShell

È possibile usare Start-AzureRmAutomationDscCompilationJob per avviare la compilazione con Windows PowerShell.You can use Start-AzureRmAutomationDscCompilationJob to start compiling with Windows PowerShell. Il codice di esempio seguente avvia la compilazione di una configurazione DSC denominata SampleConfig.The following sample code starts compilation of a DSC configuration called SampleConfig.

Start-AzureRmAutomationDscCompilationJob -ResourceGroupName "MyResourceGroup" -AutomationAccountName "MyAutomationAccount" -ConfigurationName "SampleConfig"

Start-AzureRmAutomationDscCompilationJob restituisce un oggetto processo di compilazione che è possibile usare per tenere traccia dello stato.Start-AzureRmAutomationDscCompilationJob returns a compilation job object that you can use to track its status. È quindi possibile usare questo oggetto processo di compilazione con Get-AzureRmAutomationDscCompilationJob per determinare lo stato del processo di compilazione e con Get-AzureRmAutomationDscCompilationJobOutput per visualizzarne i flussi (output).You can then use this compilation job object with Get-AzureRmAutomationDscCompilationJob to determine the status of the compilation job, and Get-AzureRmAutomationDscCompilationJobOutput to view its streams (output). Il codice di esempio seguente avvia la compilazione della configurazione SampleConfig , attende che venga completata e quindi ne visualizza i flussi.The following sample code starts compilation of the SampleConfig configuration, waits until it has completed, and then displays its streams.

$CompilationJob = Start-AzureRmAutomationDscCompilationJob -ResourceGroupName "MyResourceGroup" -AutomationAccountName "MyAutomationAccount" -ConfigurationName "SampleConfig"

while($CompilationJob.EndTime –eq $null -and $CompilationJob.Exception –eq $null)
{
    $CompilationJob = $CompilationJob | Get-AzureRmAutomationDscCompilationJob
    Start-Sleep -Seconds 3
}

$CompilationJob | Get-AzureRmAutomationDscCompilationJobOutput –Stream Any

Parametri di baseBasic Parameters

La dichiarazione dei parametri nelle configurazioni DSC, inclusi i tipi e le proprietà dei parametri, funziona esattamente come nei runbook di Automazione di Azure.Parameter declaration in DSC configurations, including parameter types and properties, works the same as in Azure Automation runbooks. Per altre informazioni sui parametri dei runbook, vedere Avvio di un Runbook in Automazione di Azure .See Starting a runbook in Azure Automation to learn more about runbook parameters.

L'esempio seguente usa due parametri denominati FeatureName e IsPresent, per determinare i valori delle proprietà nella configurazione del nodo ParametersExample.sample, generati durante la compilazione.The following example uses two parameters called FeatureName and IsPresent, to determine the values of properties in the ParametersExample.sample node configuration, generated during compilation.

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 Automation DSC per Azure o con Azure PowerShell:You can compile DSC Configurations that use basic parameters in the Azure Automation DSC portal, or with Azure PowerShell:

di Microsoft AzurePortal

Nel portale è possibile immettere i valori dei parametri dopo avere fatto clic su Compila.In the portal, you can enter parameter values after clicking Compile.

testo alternativo

PowerShellPowerShell

PowerShell richiede i parametri in un elemento hashtable dove la chiave corrisponde al nome del parametro e il valore è uguale al valore del parametro.PowerShell requires parameters in a hashtable where the key matches the parameter name, and the value equals the parameter value.

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

Start-AzureRmAutomationDscCompilationJob -ResourceGroupName "MyResourceGroup" -AutomationAccountName "MyAutomationAccount" -ConfigurationName "ParametersExample" -Parameters $Parameters

Per informazioni sul passaggio di PSCredentials come parametri, vedere Asset credenziali più avanti.For information about passing PSCredentials as parameters, see Credential Assets below.

ConfigurationDataConfigurationData

ConfigurationData consente di separare la configurazione strutturale dalla configurazione specifica di qualsiasi ambiente mentre si usa PowerShell DSC.ConfigurationData allows you to separate structural configuration from any environment specific configuration while using PowerShell DSC. Vedere il blog relativo alla distinzione tra "cosa" e "dove" in PowerShell DSC per altre informazioni su ConfigurationData.See Separating "What" from "Where" in PowerShell DSC to learn more about ConfigurationData.

Nota

È possibile usare ConfigurationData quando si compila in Azure Automation DSC con Azure PowerShell, ma non nel portale di Azure.You can use ConfigurationData when compiling in Azure Automation DSC using Azure PowerShell, but not in the Azure portal.

La configurazione DSC di esempio seguente usa ConfigurationData con le parole chiave $ConfigurationData e $AllNodes.The following example DSC configuration uses ConfigurationData via the $ConfigurationData and $AllNodes keywords. Per questo esempio sarà necessario anche il modulo xWebAdministration:You'll also need the xWebAdministration module for this example:

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 PowerShell.You can compile the DSC configuration above with PowerShell. Il cmdlet di PowerShell seguente aggiunge due configurazioni di nodo al server di pull di Automation DSC per Azure, ConfigurationDataSample.MyVM1 e ConfigurationDataSample.MyVM3:The below PowerShell adds two node configurations to the Azure Automation DSC Pull Server: ConfigurationDataSample.MyVM1 and ConfigurationDataSample.MyVM3:

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = "MyVM1"
            Role = "WebServer"
        },
        @{
            NodeName = "MyVM2"
            Role = "SQLServer"
        },
        @{
            NodeName = "MyVM3"
            Role = "WebServer"
        }
    )

    NonNodeData = @{
        SomeMessage = "I love Azure Automation DSC!"
    }
}

Start-AzureRmAutomationDscCompilationJob -ResourceGroupName "MyResourceGroup" -AutomationAccountName "MyAutomationAccount" -ConfigurationName "ConfigurationDataSample" -ConfigurationData $ConfigData

assetAssets

I riferimenti agli asset sono gli stessi nelle configurazioni di Azure Automation DSC e nei runbook.Asset references are the same in Azure Automation DSC configurations and runbooks. Per altre informazioni, vedere quanto segue:See the following for more information:

Asset credenzialiCredential Assets

Anche se le configurazioni DSC in Automazione di Azure possono fare riferimento ad asset di credenziali con Get-AzureRmAutomationCredential, gli asset di credenziali possono essere passati anche con i parametri, se necessario.While DSC configurations in Azure Automation can reference credential assets using Get-AzureRmAutomationCredential, credential assets can also be passed in via parameters, if desired. Se una configurazione accetta un parametro di tipo PSCredential , è necessario passare il nome stringa di un asset di credenziali di Automazione di Azure come valore di tale parametro, invece di un oggetto PSCredential.If a configuration takes a parameter of PSCredential type, then you need to pass the string name of an Azure Automation credential asset as that parameter’s value, rather than a PSCredential object. In background, l'asset credenziali di Automazione di Azure con tale nome verrà recuperato e passato alla configurazione.Behind the scenes, the Azure Automation credential asset with that name will be retrieved and passed to the configuration.

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.Keeping credentials secure in node configurations (MOF configuration documents) requires encrypting the credentials in the node configuration MOF file. Automazione di Azure va oltre e crittografa l'intero file MOF.Azure Automation takes this one step further and encrypts the entire MOF file. Attualmente è però necessario comunicare a PowerShell DSC che l'output delle credenziali in testo normale durante la generazione dei file MOF delle configurazioni dei nodi è corretto, perché PowerShell DSC non sa che dopo la generazione Automazione di Azure crittograferà l'intero file MOF tramite un processo di compilazione.However, currently you must tell PowerShell DSC it is okay for credentials to be outputted in plain text during node configuration MOF generation, because PowerShell DSC doesn’t know that Azure Automation will be encrypting the entire MOF file after its generation via a compilation job.

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.You can tell PowerShell DSC that it is okay for credentials to be outputted in plain text in the generated node configuration MOFs using ConfigurationData. È consigliabile passare PSDscAllowPlainTextPassword = $true tramite ConfigurationData per il nome di ogni blocco di nodi visualizzato nella configurazione DSC che usa le credenziali.You should pass PSDscAllowPlainTextPassword = $true via ConfigurationData for each node block’s name that appears in the DSC configuration and uses credentials.

L'esempio seguente mostra una configurazione DSC che usa un asset credenziali di Automazione.The following example shows a DSC configuration that uses an Automation credential asset.

Configuration CredentialSample
{
    $Cred = Get-AzureRmAutomationCredential -ResourceGroupName "ResourceGroup01" -AutomationAccountName "AutomationAcct" -Name "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.You can compile the DSC configuration above with PowerShell. Il cmdlet di PowerShell seguente aggiunge due configurazioni del nodo al server di pull di Automation DSC per Azure, CredentialSample.MyVM1 e CredentialSample.MyVM2.The below PowerShell adds two node configurations to the Azure Automation DSC Pull Server: CredentialSample.MyVM1 and CredentialSample.MyVM2.

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

Start-AzureRmAutomationDscCompilationJob -ResourceGroupName "MyResourceGroup" -AutomationAccountName "MyAutomationAccount" -ConfigurationName "CredentialSample" -ConfigurationData $ConfigData

Importazione delle configurazioni di nodoImporting node configurations

È anche possibile importare configurazioni di nodo (MOF) compilate all'esterno di Azure.You can also import node configuratons (MOFs) that you have compiled outside of Azure. Uno dei vantaggi di questa operazione consiste nel fatto che le configurazioni di nodo possono essere firmate.One advantage of this is that node confiturations can be signed. Una configurazione del nodo firmata viene verificata in locale in un nodo gestito dall'agente DSC, garantendo che la configurazione applicata al nodo provenga da una fonte autorizzata.A signed node configuration is verified locally on a managed node by the DSC agent, ensuring that the configuration being applied to the node comes from an authorized source.

Nota

È possibile importare configurazioni firmate nell'account di Automazione di Azure, che tuttavia attualmente non supporta la compilazione di configurazioni firmate.You can use import signed configurations into your Azure Automation account, but Azure Automation does not currently support compiling signed configurations.

Nota

Il file di configurazione del nodo deve essere superiore a 1 MB per consentire l'importazione in Automazione di Azure.A node configuration file must be no larger than 1 MB to allow it to be imported into Azure Automation.

Altre informazioni su come firmare le configurazioni del nodo firmate sono reperibili all'indirizzo: https://msdn.microsoft.com/en-us/powershell/wmf/5.1/dsc-improvements#how-to-sign-configuration-and-module.You can learn how to sign node configurations at https://msdn.microsoft.com/en-us/powershell/wmf/5.1/dsc-improvements#how-to-sign-configuration-and-module.

Importazione di una configurazione del nodo nel portale di AzureImporting a node configuration in the Azure portal

  1. Nell'account di Automazione fare clic su Configurazioni del nodo DSC.From your Automation account, click DSC node configurations.

    Configurazioni del nodo DSC

  2. Nel pannello Configurazioni del nodo DSC fare clic su Add a NodeConfiguration (Aggiungi una configurazione nodo).In the DSC node configurations blade, click Add a NodeConfiguration.
  3. Nel pannello Importa fare clic sull'icona della cartella accanto alla casella di testo Node Configuration File (File di configurazione nodo) per cercare un file di configurazione del nodo (MOF) nel computer locale.In the Import blade, click the folder icon next to the Node Configuration File textbox to browse for a node configuration file (MOF) on your local computer.

    Cercare il file locale

  4. Immettere un nome nella casella di testo Nome configurazione.Enter a name in the Configuration Name textbox. Il nome deve corrispondere al nome della configurazione da cui è stata compilata la configurazione del nodo.This name must match the name of the configuration from which the node configuration was compiled.
  5. Fare clic su OK.Click OK.

Importazione di una configurazione del nodo con PowerShellImporting a node configuration with PowerShell

È possibile usare il cmdlet Import-AzureRmAutomationDscNodeConfiguration per importare una configurazione del nodo nell'account di automazione.You can use the Import-AzureRmAutomationDscNodeConfiguration cmdlet to import a node configuration into your automation account.

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