Introduzione al gestore dell'estensione DSC (Desired State Configuration) di AzureIntroduction to the Azure Desired State Configuration extension handler

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and classic. In questo articolo viene illustrato l'utilizzo di entrambi i modelli, ma Microsoft indica che le distribuzioni più nuove utilizzano il modello di gestione delle risorse.This article covers using both models, but Microsoft recommends that most new deployments use the Resource Manager model.

L'agente di macchine virtuali di Azure e le relative estensioni associate fanno parte dei servizi di infrastruttura di Microsoft Azure.The Azure VM Agent and associated Extensions are part of the Microsoft Azure Infrastructure Services. Le estensioni di VM sono componenti software che estendono la funzionalità di una VM e semplificano varie operazioni di gestione delle VM.VM Extensions are software components that extend the VM functionality and simplify various VM management operations. Ad esempio, l'estensione VMAccess consente di reimpostare la password dell'amministratore; l'estensione Script personalizzato invece può essere usata per eseguire uno script nella VM.For example, the VMAccess extension can be used to reset an administrator's password, or the Custom Script extension can be used to execute a script on the VM.

Questo articolo illustra l'estensione DSC (Desired State Configuration) PowerShell per le VM di Azure in Azure PowerShell SDK.This article introduces the PowerShell Desired State Configuration (DSC) Extension for Azure VMs as part of the Azure PowerShell SDK. È possibile usare i nuovi cmdlet per caricare e applicare una configurazione DSC PowerShell in una macchina virtuale di Azure abilitata con l'estensione DSC PowerShell.You can use new cmdlets to upload and apply a PowerShell DSC configuration on an Azure VM enabled with the PowerShell DSC extension. L'estensione DSC PowerShell esegue una chiamata in PowerShell DSC per applicare la configurazione DSC ricevuta nella VM.The PowerShell DSC extension calls into PowerShell DSC to enact the received DSC configuration on the VM. Questa funzionalità è disponibile anche tramite il portale di Azure.This functionality is also available through the Azure portal.

PrerequisitiPrerequisites

Computer locale : per interagire con l'estensione della VM di Azure, è necessario usare il portale di Azure o Azure PowerShell SDK.Local machine To interact with the Azure VM extension, you need to use either the Azure portal or the Azure PowerShell SDK.

Agente guest : la VM di Azure cui applicare la configurazione DSC deve essere un sistema operativo che supporta Windows Management Framework 4.0 o 5.0.Guest Agent The Azure VM that is configured by the DSC configuration needs to be an OS that supports either Windows Management Framework (WMF) 4.0 or 5.0. L'elenco completo delle versioni dei sistemi operativi supportati è disponibile nella cronologia delle versioni dell'estensione DSC.The full list of supported OS versions can be found at the DSC Extension Version History.

Termini e concettiTerms and concepts

Questa guida presuppone che si abbia familiarità con i concetti seguenti:This guide presumes familiarity with the following concepts:

Configurazione: documento di configurazione DSC.Configuration - A DSC configuration document.

Nodo: destinazione per una configurazione DSC.Node - A target for a DSC configuration. In questo documento, "nodo" fa sempre riferimento a una VM di Azure.In this document, "node" always refers to an Azure VM.

Dati di configurazione: file con estensione psd1 contenente i dati ambientali per una configurazione.Configuration Data - A .psd1 file containing environmental data for a configuration

Panoramica dell'architetturaArchitectural overview

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.The Azure DSC extension uses the Azure VM Agent framework to deliver, enact, and report on DSC configurations running on Azure VMs. L'estensione DSC prevede un file ZIP contenente almeno un documento di configurazione e un set di parametri fornito tramite Azure PowerShell SDK oppure tramite il portale di Azure.The DSC extension expects a .zip file containing at least a configuration document, and a set of parameters provided either through the Azure PowerShell SDK or through the Azure portal.

Quando viene chiamata per la prima volta, l'estensione esegue un processo di installazione.When the extension is called for the first time, it runs an installation process. Tale processo installa una versione di Windows Management Framework adottando la logica seguente:This process installs a version of the Windows Management Framework (WMF) using the following logic:

  1. Se il sistema operativo della macchina virtuale di Azure è Windows Server 2016, non viene eseguita alcuna azione.If the Azure VM OS is Windows Server 2016, no action is taken. In Windows Server 2016 è già installata la versione più recente di PowerShell.Windows Server 2016 already has the latest version of PowerShell installed.
  2. Se la proprietà wmfVersion è specificata, viene installata la versione di WMF corrispondente a meno che non sia incompatibile con il sistema operativo della VM.If the wmfVersion property is specified, that version of the WMF is installed unless it is incompatible with the VM's OS.
  3. Se la proprietà wmfVersion non è specificata, viene installata la versione più recente applicabile di WMF.If no wmfVersion property is specified, the latest applicable version of the WMF is installed.

L'installazione di Windows Management Framework richiede il riavvio del sistema.Installation of the WMF requires a reboot. Dopo il riavvio, l'estensione scarica il file .zip specificato nella proprietà modulesUrl.After reboot, the extension downloads the .zip file specified in the modulesUrl property. Se tale percorso si trova nell'archiviazione BLOB di Azure, è possibile specificare un token di firma di accesso condiviso nella proprietà sasToken per accedere al file.If this location is in Azure blob storage, a SAS token can be specified in the sasToken property to access the file. Dopo aver scaricato e decompresso il file .zip, la funzione di configurazione definita in configurationFunction viene eseguita per generare il file MOF.After the .zip is downloaded and unpacked, the configuration function defined in configurationFunction is run to generate the MOF file. L'estensione esegue quindi Start-DscConfiguration -Force nel file MOF generato,The extension then runs Start-DscConfiguration -Force on the generated MOF file. acquisisce l'output e lo riscrive nel canale di stato di Azure.The extension captures output and writes it back out to the Azure Status Channel. Da questo momento, Gestione configurazione locale DSC gestisce il monitoraggio e la correzione come di consueto.From this point on, the DSC LCM handles monitoring and correction as normal.

Cmdlet PowerShellPowerShell cmdlets

I cmdlet di PowerShell possono essere usati con Azure Resource Manager o con il modello di distribuzione classica per creare pacchetti, pubblicare e monitorare le distribuzioni di estensione DSC.PowerShell cmdlets can be used with Azure Resource Manager or the classic deployment model to package, publish, and monitor DSC extension deployments. I cmdlet elencati di seguito sono i moduli di distribuzione classica, ma "Azure" può essere sostituito con "AzureRm" per usare il modello di Azure Resource Manager.The following cmdlets listed are the classic deployment modules, but "Azure" can be replaced with "AzureRm" to use the Azure Resource Manager model. Ad esempio, Publish-AzureVMDscConfiguration usa il modello di distribuzione classica, mentre Publish-AzureRmVMDscConfiguration usa Azure Resource Manager.For example, Publish-AzureVMDscConfiguration uses the classic deployment model, where Publish-AzureRmVMDscConfiguration uses Azure Resource Manager.

Publish-AzureVMDscConfiguration riceve un file di configurazione, lo analizza per cercare risorse DSC dipendenti e crea un file .zip contenente la configurazione e le risorse DSC necessarie per applicare la configurazione.Publish-AzureVMDscConfiguration takes in a configuration file, scans it for dependent DSC resources, and creates a .zip file containing the configuration and DSC resources needed to enact the configuration. Può anche creare il pacchetto in locale usando il parametro -ConfigurationArchivePathIt can also create the package locally using the -ConfigurationArchivePath parameter. oppure pubblica il file .zip nell'archiviazione BLOB di Azure e lo protegge con un token di firma di accesso condiviso.Otherwise, it publishes the .zip file to Azure blob storage and secures it with a SAS token.

Il file ZIP creato da questo cmdlet include lo script di configurazione con estensione ps1 nella radice della cartella di archiviazione.The .zip file created by this cmdlet has the .ps1 configuration script at the root of the archive folder. Per le risorse, la cartella del modulo è posizionata nella cartella di archiviazione.Resources have the module folder placed in the archive folder.

Set-AzureVMDscExtension inserisce le impostazioni necessarie per l'estensione DSC di PowerShell in un oggetto di configurazione VM.Set-AzureVMDscExtension injects the settings needed by the PowerShell DSC extension into a VM configuration object. Nel modello di distribuzione classica è necessario applicare le modifiche di una VM a una VM di Azure con Update-AzureVM.In the classic deployment model, the VM changes must be applied to an Azure VM with Update-AzureVM.

Get-AzureVMDscExtension recupera lo stato dell'estensione DSC di una determinata VM.Get-AzureVMDscExtension retrieves the DSC extension status of a particular VM.

Get-AzureVMDscExtensionStatus recupera lo stato della configurazione DSC applicata dal gestore dell'estensione DSC.Get-AzureVMDscExtensionStatus retrieves the status of the DSC configuration enacted by the DSC extension handler. Questa azione può essere eseguita su una singola VM o su un gruppo di VM.This action can be performed on a single VM, or group of VMs.

Remove-AzureVMDscExtension rimuove il gestore dell'estensione da una determinata macchina virtuale.Remove-AzureVMDscExtension removes the extension handler from a given virtual machine. Questo cmdlet non rimuove la configurazione, non disinstalla WMF e non modifica le impostazioni applicate nella macchina virtuale.This cmdlet does not remove the configuration, uninstall the WMF, or change the applied settings on the virtual machine. Rimuove soltanto il gestore dell'estensione.It only removes the extension handler.

Differenze principali tra cmdlet ASM e cmdlet di Azure Resource ManagerKey differences in ASM and Azure Resource Manager cmdlets

  • I cmdlet di Azure Resource Manager sono sincroni,Azure Resource Manager cmdlets are synchronous. mentre i cmdlet di Gestione dei servizi di Azure sono asincroni.ASM cmdlets are asynchronous.
  • ResourceGroupName, VMName, ArchiveStorageAccountName, Version e Location sono tutti parametri obbligatori in Azure Resource Manager.ResourceGroupName, VMName, ArchiveStorageAccountName, Version, and Location are all required parameters in Azure Resource Manager.
  • ArchiveResourceGroupName è un nuovo parametro facoltativo per Azure Resource Manager.ArchiveResourceGroupName is a new optional parameter for Azure Resource Manager. Questo parametro può essere specificato quando l'account di archiviazione appartiene a un gruppo di risorse diverso da quello in cui viene creata la macchina virtuale.You can specify this parameter when your storage account belongs to a different resource group than the one where the virtual machine is created.
  • ConfigurationArchive è denominato ArchiveBlobName in Azure Resource ManagerConfigurationArchive is called ArchiveBlobName in Azure Resource Manager
  • ContainerName è denominato ArchiveContainerName in Azure Resource ManagerContainerName is called ArchiveContainerName in Azure Resource Manager
  • StorageEndpointSuffix è denominato ArchiveStorageEndpointSuffix in Azure Resource ManagerStorageEndpointSuffix is called ArchiveStorageEndpointSuffix in Azure Resource Manager
  • L'opzione AutoUpdate è stata aggiunta in Azure Resource Manager per consentire l'aggiornamento automatico del gestore dell'estensione alla versione più recente, non appena disponibile.The AutoUpdate switch has been added to Azure Resource Manager to enable automatic updating of the extension handler to the latest version as and when it is available. Si noti che questo parametro potrebbe causare il riavvio della VM quando viene rilasciata una nuova versione di WMF.Note this parameter has the potential to cause reboots on the VM when a new version of the WMF is released.

Funzionalità del portale di AzureAzure portal functionality

Passare a una macchina virtuale.Browse to a VM. In Impostazioni -> Generale fare clic su "Estensioni".Under Settings -> General click "Extensions." Verrà creato un nuovo riquadro.A new pane is created. Fare clic su Add e selezionare PowerShell DSC.Click "Add" and select PowerShell DSC.

Il portale richiede un input.The portal needs input. Configuration Modules or Script(Moduli o script di configurazione): questo è un campo obbligatorio.Configuration Modules or Script: This field is mandatory. Richiede un file con estensione .ps1 contenente uno script di configurazione oppure un file .zip con uno script di configurazione con estensione ps1 nella directory radice e tutte le risorse dipendenti nelle cartelle del modulo all'interno del file .zip.Requires a .ps1 file containing a configuration script, or a .zip file with a .ps1 configuration script at the root, and all dependent resources in module folders within the .zip. Può essere creato con il cmdlet Publish-AzureVMDscConfiguration -ConfigurationArchivePath incluso in Azure PowerShell SDK.It can be created with the Publish-AzureVMDscConfiguration -ConfigurationArchivePath cmdlet included in the Azure PowerShell SDK. Il file .zip viene caricato nell'archiviazione BLOB dell'utente protetta da un token di firma di accesso condiviso.The .zip file is uploaded into your user blob storage secured by a SAS token.

Configuration Data PSD1 File(File PSD1 dati di configurazione): questo è un campo facoltativo.Configuration Data PSD1 File: This field is optional. Se la configurazione usata richiede un file di dati della configurazione con estensione .psd1, usare questo campo per selezionarlo e quindi caricarlo nell'archiviazione BLOB dell'utente, in cui sarà protetto da un token di firma di accesso condiviso.If your configuration requires a configuration data file in .psd1, use this field to select it and upload it to your user blob storage, where it is secured by a SAS token.

Module-Qualified Name of Configuration: i file con estensione .ps1 possono avere più funzioni di configurazione.Module-Qualified Name of Configuration: .ps1 files can have multiple configuration functions. Immettere il nome dello script di configurazione con estensione ps1 seguito da '' e dal nome della funzione di configurazione.Enter the name of the configuration .ps1 script followed by a '' and the name of the configuration function. Ad esempio, se lo script con estensione .ps1 ha il nome "configuration.ps1" e la configurazione è "IisInstall", immettere: configuration.ps1\IisInstallFor example, if your .ps1 script has the name "configuration.ps1", and the configuration is "IisInstall", you would enter: configuration.ps1\IisInstall

Configuration Arguments: se la funzione di configurazione accetta argomenti, immetterli qui nel formato argumentName1=value1,argumentName2=value2.Configuration Arguments: If the configuration function takes arguments, enter them in here in the format argumentName1=value1,argumentName2=value2. Questo formato è diverso rispetto a quello in cui vengono accettati gli argomenti di configurazione tramite i cmdlet di PowerShell o i modelli di Resource Manager.Note this format is a different format than how configuration arguments are accepted through PowerShell cmdlets or Resource Manager templates.

IntroduzioneGetting started

L'estensione DSC di Azure riceve i documenti di configurazione DSC e li applica nelle macchine virtuali di Azure.The Azure DSC extension takes in DSC configuration documents and enacts them on Azure VMs. Di seguito è riportato un semplice esempio di configurazione.A simple example of a configuration follows. Salvarlo in locale come "IisInstall.ps1":Save it locally as "IisInstall.ps1":

configuration IISInstall 
{ 
    node "localhost"
    { 
        WindowsFeature IIS 
        { 
            Ensure = "Present" 
            Name = "Web-Server"                       
        } 
    } 
}

La procedura seguente posiziona lo script IisInstall.ps1 nella VM specificata, esegue la configurazione e invia un report sullo stato.The following steps place the IisInstall.ps1 script on the specified VM, execute the configuration, and report back on status.

Modello classicoClassic model

#Azure PowerShell cmdlets are required
Import-Module Azure

#Use an existing Azure Virtual Machine, 'DscDemo1'
$demoVM = Get-AzureVM DscDemo1

#Publish the configuration script into user storage.
Publish-AzureVMDscConfiguration -ConfigurationPath ".\IisInstall.ps1" -StorageContext $storageContext -Verbose -Force

#Set the VM to run the DSC configuration
Set-AzureVMDscExtension -VM $demoVM -ConfigurationArchive "IisInstall.ps1.zip" -StorageContext $storageContext -ConfigurationName "IisInstall" -Verbose

#Update the configuration of an Azure Virtual Machine
$demoVM | Update-AzureVM -Verbose

#check on status
Get-AzureVMDscExtensionStatus -VM $demovm -Verbose

Modello di Azure Resource ManagerAzure Resource Manager model

$resourceGroup = "dscVmDemo"
$location = "westus"
$vmName = "myVM"
$storageName = "demostorage"
#Publish the configuration script into user storage
Publish-AzureRmVMDscConfiguration -ConfigurationPath .\iisInstall.ps1 -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
Set-AzureRmVmDscExtension -Version 2.21 -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName iisInstall.ps1.zip -AutoUpdate:$true -ConfigurationName "IISInstall"

RegistrazioneLogging

I log vengono inseriti in:Logs are placed in:

C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC[Numero versione]C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC[Version Number]

Passaggi successiviNext steps

Per altre informazioni su PowerShell DSC, vedere il centro di documentazione di PowerShell.For more information about PowerShell DSC, visit the PowerShell documentation center.

Esaminare il modello di Azure Resource Manager per l'estensione DSC.Examine the Azure Resource Manager template for the DSC extension.

Per trovare altre funzionalità che è possibile gestire con PowerShell DSC, cercare in PowerShell Gallery altre risorse DSC.To find additional functionality you can manage with PowerShell DSC, browse the PowerShell gallery for more DSC resources.

Per altre informazioni sul passaggio di parametri sensibili nelle configurazioni, vedere l'articolo Gestione sicura delle credenziali con il gestore estensione DSC.For details on passing sensitive parameters into configurations, see Manage credentials securely with the DSC extension handler.