Introducción al controlador de extensiones de configuración de estado deseado de Azure

La extensión de máquina virtual de Azure para máquinas virtuales (VM) de Azure y las extensiones asociadas forman parte de los servicios de infraestructura de Microsoft Azure. Las extensiones de la máquina virtual de Azure son componentes de software que amplían la funcionalidad de dicha máquina virtual y simplifican diversas operaciones de administración de la máquina virtual.

El uso principal de la extensión Desired State Configuration (DSC) de Azure para Windows PowerShell es arrancar una máquina virtual en el servicio State Configuration (DSC) de Azure Automation. Este servicio proporciona ventajas, que incluyen la administración continua de la configuración de máquinas virtuales y la integración con otras herramientas operativas, como Azure Monitor. Puede usar la extensión para registrar las máquinas virtuales en el servicio y obtener una solución flexible que funcione en las suscripciones de Azure.

Puede ejecutar la extensión DSC independientemente del servicio DSC de Automation, pero este método solo inserta una configuración en la máquina virtual. No hay ningún informe disponible, excepto los locales en la máquina virtual. Antes de habilitar la extensión DSC, revise las versiones de DSC disponibles y elija la versión que admita los requisitos de configuración.

En este artículo, se describe cómo usar la extensión DSC para la incorporación de Automation o usarla como herramienta para asignar configuraciones a máquinas virtuales con Azure SDK.

Versiones de DSC disponibles

Hay varias versiones de Desired State Configuration disponibles para la implementación. Antes de habilitar la extensión DSC, elija la versión de DSC que mejor admita los objetivos empresariales y de configuración.

Versión Disponibilidad Descripción
2.0 Disponibilidad general Desired State Configuration 2.0 se admite para su uso con la característica Azure Automanage Machine Configuration. La característica de configuración de máquina combina características de la extensión DSC del controlador, Azure Automation State Configuration y las características que más solicitan los clientes en sus comentarios. La configuración de máquina también incluye compatibilidad con las máquinas híbridas mediante servidores habilitados para Arc.
1.1 Disponibilidad general Si la implementación no usa la característica de configuración de la máquina de Azure Automanage, debe elegir Desired State Configuration 1.1. Para más información, consulte PSDesiredStateConfiguration v1.1.
3.0 Versión preliminar pública Desired State Configuration 3.0 está disponible en la versión beta pública. Esta versión solo se debe usar con la configuración de la máquina de Azure o para entornos que no son de producción para probar la migración de Desired State Configuration 1.1.

Requisitos previos

  • Máquina local: para interactuar con la extensión Azure DSC, debe usar Azure Portal o el SDK de Azure PowerShell en la máquina local.

  • Agente invitado: la máquina virtual de Azure preparada con la configuración de DSC debe tener un sistema operativo que admita Windows Management Framework (WMF) 4.0 o posterior. Puede encontrar la lista completa de las versiones compatibles del sistema operativo en el historial de versiones de la extensión Azure DSC.

Términos y conceptos

En este artículo, se asume que está familiarizado con estos conceptos:

  • Configuración: se refiere a un documento de configuración de DSC.

  • Nodo: identifica un destino para una configuración de DSC. En este artículo, nodo siempre hace referencia a una máquina virtual de Azure.

  • Los datos de configuración se almacenan en un archivo de formato DSC de PowerShell (.psd1) que tiene datos de entorno para una configuración.

Architecture

La extensión DSC de Azure usa el marco de extensión de máquina virtual de Azure para entregar y aplicar las configuraciones de DSC que se ejecutan en las máquinas virtuales de Azure, así como informar sobre estas. La extensión DSC acepta un documento de configuración y un conjunto de parámetros. Si no se proporciona ningún archivo, se inserta un script de configuración predeterminada con la extensión. El script de configuración predeterminada se usa únicamente para establecer metadatos en el administrador de configuración Local.

Cuando se llama a la extensión por primera vez, se instala una versión de WMF usando la siguiente lógica:

  • Si el sistema operativo de la máquina virtual de Azure es Windows Server 2016, no se realiza ninguna acción. Windows Server 2016 ya tiene instalada la versión más reciente de PowerShell.

  • Si se especifica la propiedad wmfVersion, se instala la versión especificada de WMF, a menos que la versión especificada no sea compatible con el sistema operativo de la máquina virtual.

  • Si no hay ninguna propiedad wmfVersion especificada, se instala la versión aplicable más reciente de WMF.

El proceso de instalación de WMF requiere un reinicio. Después del reinicio, la extensión descarga el archivo .zip que se especifica en la propiedad modulesUrl, si se proporciona. Si esta ubicación se encuentra en Azure Blob Storage, se puede especificar un token de SAS en la propiedad sasToken para acceder al archivo. Después de que el .zip descargue y desempaquete, la función de configuración definida en configurationFunction se ejecuta para generar un archivo Managed Object Format (MOF) (.mof). Luego, la extensión ejecuta el comando Start-DscConfiguration -Force con el archivo .mof generado. La extensión captura la salida y la escribe en el canal de estado de Azure.

Script de configuración predeterminada

La extensión Azure DSC incluye un script de configuración predeterminada diseñado para utilizarse al incorporar una máquina virtual al servicio Azure Automation State Configuration. Los parámetros del script se alinean con las propiedades configurables del administrador de configuración local. Para los parámetros de script, consulte Script de configuración predeterminada en Extensión Desired State Configuration con plantillas de Azure Resource Manager (ARM). Para el script completo, consulte la plantilla de inicio rápido de Azure en GitHub.

Registro de Azure Automation State Configuration

Cuando se usa la extensión Azure DSC para registrar un nodo con el servicio Azure Automation State Configuration, se proporcionan los siguientes valores:

  • RegistrationUrl: dirección https de la cuenta de Azure Automation.
  • RegistrationKey: secreto compartido que se usa para registrar los nodos con el servicio.
  • NodeConfigurationName: nombre de la configuración del nodo (MOF) para extraer desde el servicio y configurar el rol de servidor. El valor es el nombre de la configuración del nodo y no el nombre de la Configuración.

Puede recopilar estos valores desde Azure Portal o ejecutar los siguientes comandos en Windows PowerShell:

(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).Endpoint
(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).PrimaryKey

Nombre de la configuración de nodo

Para el parámetro NodeConfigurationName, asegúrese de proporcionar el nombre de la configuración del nodo, no la Configuración.

La Configuración se define en un script que se usa para compilar la configuración del nodo (archivo MOF). El nombre de la configuración del nodo es siempre el nombre de la Configuración, seguido de un punto . y localhost o un nombre de equipo específico.

Advertencia

Asegúrese de que la configuración del nodo existe en Azure Automation State Configuration. Si este valor no existe, la implementación de la extensión devuelve un error.

Implementación de la plantilla de ARM

El enfoque más común para implementar la extensión DSC es usar plantillas de Azure Resource Manager. Para más información y ejemplos sobre cómo incluir la extensión DSC en las plantillas de ARM, consulte Extensión Desired State Configuration con plantillas de ARM.

Implementación de cmdlets de PowerShell

Los cmdlets de PowerShell para administrar la extensión DSC son ideales para solucionar problemas de manera interactiva y escenarios de recopilación de información. Puede usar los cmdlets para empaquetar, publicar y supervisar las implementaciones de la extensión DSC. Los cmdlets para la extensión DSC aún no se han actualizado para trabajar con el script de configuración predeterminada.

Estos son algunos de los cmdlets de PowerShell que están disponibles:

  • El cmdlet Publish-AzVMDscConfiguration toma un archivo de configuración, busca los recursos de DSC dependientes y, luego, crea un archivo zip. El archivo zip contiene la configuración y recursos de DSC que son necesarios para aplicar la configuración. El cmdlet también puede crear el paquete localmente mediante el parámetro -OutputArchivePath. En caso contrario, el cmdlet publica el archivo .zip en Blob Storage y lo protege con un token de SAS.

    El script de configuración de PowerShell (.ps1) que el cmdlet crea se encuentra en el archivo .zip en la raíz de la carpeta de archivos. La carpeta del módulo se encuentra en la carpeta de archivos en los recursos.

  • El cmdlet Set-AzVMDscExtension inserta la configuración que la extensión DSC de PowerShell necesita en un objeto de configuración de VM.

  • El cmdlet Get-AzVMDscExtension recupera el estado de la extensión DSC de una VM específica.

  • El cmdlet Get-AzVMDscExtensionStatus recupera el estado de la configuración de DSC que el controlador de la extensión DSC aplica. Esta acción puede realizarse en una sola máquina virtual o en un grupo de máquinas virtuales.

  • El cmdlet Remove-AzVMDscExtension quita el controlador de extensiones de una VM específica. Tenga en cuenta que este cmdlet no quita la configuración, ni desinstala WMF ni cambia la configuración aplicada en la máquina virtual. El cmdlet solo quita el controlador de extensiones.

Consideraciones importantes

Hay varias consideraciones que debe tener en cuenta al trabajar con cmdlets de Azure Resource Manager.

  • Los cmdlets de Azure Resource Manager son sincrónicos.

  • Se requieren varios parámetros, incluidos ResourceGroupName, VMName, ArchiveStorageAccountName, Version y Location.

  • ArchiveResourceGroupName es un parámetro opcional. Especifique este parámetro cuando la cuenta de almacenamiento pertenezca a un grupo de recursos que no sea el mismo en el que se crea la máquina virtual.

  • Use el modificador AutoUpdate para actualizar automáticamente el controlador de extensiones a la versión más reciente cuando esté disponible. Este parámetro puede provocar que la máquina virtual se reinicie cuando se lance una nueva versión de WMF.

Configuración con cmdlets de PowerShell

La extensión DSC de Azure puede usar documentos de configuración de DSC para configurar directamente las máquinas virtuales de Azure durante la implementación. Este paso no registra el nodo en Automation. Tenga en cuenta que el nodo no se administra de forma centralizada.

Este código muestra un ejemplo de configuración sencillo. Para trabajar con este ejemplo, guarde esta configuración localmente como el archivo de script iisInstall.ps1.

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

Los siguientes comandos de PowerShell colocan el script iisInstall.ps1 en la máquina virtual especificada. Los comandos también ejecutan la configuración y luego informan sobre el estado.

$resourceGroup = 'dscVmDemo'
$vmName = 'myVM'
$storageName = 'demostorage'
#Publish the configuration script to user storage
Publish-AzVMDscConfiguration -ConfigurationPath .\iisInstall.ps1 -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
Set-AzVMDscExtension -Version '2.76' -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName 'iisInstall.ps1.zip' -AutoUpdate -ConfigurationName 'IISInstall'

Implementación de la CLI de Azure

La CLI de Azure puede utilizarse para implementar la extensión DSC en una máquina virtual existente. Estos ejemplos muestran cómo implementar una máquina virtual en Windows.

Para una máquina virtual que ejecuta Windows, use el siguiente comando:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name DSC \
  --publisher Microsoft.Powershell \
  --version 2.77 --protected-settings '{}' \
  --settings '{}'

Implementación de Azure Portal

Para configurar la extensión DSC en Azure Portal, siga estos pasos:

  1. Vaya a la máquina virtual.

  2. En Configuración, seleccione Extensiones y aplicaciones.

  3. En Extensiones, seleccione + Agregar.

  4. Seleccione Desired State Configuration de PowerShell, y luego Siguiente.

  5. Configure los parámetros siguientes para la extensión DSC.

    Nota

    Si está trabajando con un script de configuración predeterminada, tenga en cuenta que la mayoría de los parámetros siguientes deben definirse directamente en Azure Portal, y no a través del script.

    • Módulos de configuración o script: (obligatorio) proporcione los módulos de configuración o el archivo de script para la máquina virtual.

      Los scripts y módulos de configuración requieren un archivo. ps1 que tiene un script de configuración o un archivo .zip con un script de configuración. ps1 en la raíz. Si utiliza un archivo .zip, todos los recursos dependientes se deben incluir en las carpetas de módulo en el archivo .zip. Puede crear el archivo ZIP mediante el cmdlet Publish-AzureVMDscConfiguration -OutputArchivePath que se incluye en el SDK de Azure PowerShell. El archivo .zip se carga en su Blob Storage de usuario y se protege mediante un token de SAS.

    • Nombre completo del módulo de configuración: (obligatorio) especifique esta opción para incluir varias funciones de configuración en un único archivo de script de .ps1. Para esta configuración, escriba el nombre del archivo de script .ps1 de configuración seguido de una barra diagonal \ y el nombre de la función de configuración. Por ejemplo, si el archivo de script .ps1 tiene el nombre configuration.ps1 y el nombre de configuración es IisInstall, escriba el valor configuration.ps1\IisInstall de la configuración.

    • Argumentos de configuración: si la función de configuración adopta argumentos, escriba los valores aquí con el formato argumentName1=value1,argumentName2=value2. Tenga en cuenta que este formato difiere del formato que se usa para especificar argumentos de configuración en cmdlets de PowerShell o plantillas de ARM.

      Nota

      Los argumentos de configuración se pueden definir en un script de configuración predeterminada.

    • Archivo PSD1 de datos de configuración: si la configuración necesita un archivo de datos de configuración en formato .psd1, use esta configuración para seleccionar el archivo de datos y cargarlo a su Blob Storage de usuario. El archivo de datos de configuración se protege mediante un token de SAS en Blob Storage.

    • Versión de WMF: especifica la versión de Windows Management Framework que se va a instalar en la máquina virtual. Si elige más reciente, que es el valor predeterminado, el sistema instala la versión más reciente de WMF. Otros valores posibles incluyen 4.0, 5.0 y 5.1. Estos valores posibles están sujetos a actualizaciones.

    • Recopilación de datos: habilite esta configuración si desea que la extensión DSC recopile telemetría sobre la máquina virtual. Para más información, consulte Azure DSC extension data collection (Colección de datos de la extensión DSC de Azure).

    • Versión: (obligatorio) especifica la versión de la extensión DSC que se va a instalar. Para obtener información sobre las versiones, consulte Historial de versiones de la extensión Azure DSC.

    • Actualización automática de la versión secundaria: esta configuración se asigna al conmutador AutoUpdate en los cmdlets. Configure esta opción para permitir que la extensión DSC se actualice automáticamente a la versión más reciente durante la instalación. indica al controlador de extensión DSC que use la versión más reciente disponible. No (valor predeterminado) obliga la instalación de la versión que especifique en la configuración Versión.

  6. Después de configurar los parámetros, seleccione Revisar y crear y luego seleccione Crear.

Registros de extensión DSC

Puede ver los registros de la extensión Azure DSC en la máquina virtual en C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\<version number>.

Pasos siguientes