Configura las máquinas a un estado deseado

Nota:

Azure Automation State Configuration se retirará el 30 de septiembre de 2027, realice la transición a Azure Machine Configuration por esa fecha. Para obtener más información, consulte el anuncio del blog. El servicio Azure Machine Configuration combina características de la extensión de DSC, Azure Automation State Configuration y las características más solicitadas de los comentarios de los clientes. Azure Machine Configuration también incluye compatibilidad con máquinas híbridas a través de servidores habilitados para Arc.

Importante

Los vínculos de navegación Agregar, Configuración de Compose, y Galería se quitarán del portal el 31 de marzo de 2025.

Precaución

Azure Automation DSC para Linux se ha retirado el 30 de septiembre de 2023. Para obtener más información, consulte el anuncio.

Azure Automation State Configuration permite especificar configuraciones para los servidores y asegurarse de que esos servidores están en el estado especificado a lo largo del tiempo.

  • Incorporación de una máquina virtual para ser administrada por Azure Automation DSC
  • Carga de una configuración en Azure Automation
  • Compilar una configuración en una configuración de nodo
  • Asignación de una configuración de nodo a un nodo administrado
  • Comprobación del estado de cumplimiento de un nodo administrado

Para este tutorial, se usa una configuración DSC simple que se asegura de que IIS está instalado en la máquina virtual.

Requisitos previos

Nota:

Windows Server 2008 y Windows Server 2008 R2 han alcanzado la finalización del soporte (EOS). Para obtener más información, vea Fin del soporte técnico para Windows Server 2008 y Windows Server 2008 R2 y Realizar una actualización local a Windows Server 2016, 2019, 2022 o 2025. Revise el uso y planee las actualizaciones y migraciones del sistema operativo en consecuencia.

Compatibilidad con configuraciones parciales

Azure Automation State Configuration admite el uso de las configuraciones parciales. En este escenario, DSC está configurado para administrar varias configuraciones de forma independiente y cada configuración se recupera de Azure Automation. Sin embargo, solo se puede asignar una configuración a un nodo por cada cuenta de automatización. Esto significa que si usa dos configuraciones para un nodo, necesita dos cuentas de Automation.

Para obtener más información sobre cómo registrar una configuración parcial de un servicio de extracción, consulte la documentación sobre configuraciones parciales.

Para obtener más información acerca de cómo los equipos pueden trabajar juntos para administrar de forma colaborativa los servidores con la configuración como código, consulte Descripción del rol de DSC en una canalización de CI/CD.

Iniciar sesión en Azure

Inicie sesión en la suscripción de Azure con el cmdlet Connect-AzAccount y siga las instrucciones en pantalla.

Connect-AzAccount

Creación y carga de una configuración en Azure Automation

En un editor de texto, escriba lo siguiente y guárdelo localmente como TestConfig.ps1.

configuration TestConfig {
   Node WebServer {
      WindowsFeature IIS {
         Ensure               = 'Present'
         Name                 = 'Web-Server'
         IncludeAllSubFeature = $true
      }
   }
}

Nota:

Los nombres de configuración de Azure Automation deben limitarse a no más de 100 caracteres.

En escenarios más avanzados en los que se requiere la importación de varios módulos que proporcionen recursos de DSC, asegúrese de que cada módulo tenga una línea única Import-DscResource en la configuración.

Llame al cmdlet Import-AzAutomationDscConfiguration para cargar una configuración de nodo en la cuenta de Automation.

$importAzAutomationDscConfigurationSplat = @{
    SourcePath = 'C:\DscConfigs\TestConfig.ps1'
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Published = $true
}
Import-AzAutomationDscConfiguration @importAzAutomationDscConfigurationSplat

Compilar una configuración en una configuración de nodo

Una configuración DSC se debe compilar en una configuración de nodo antes de que se pueda asignar a un nodo. Consulte Configuraciones de DSC.

Ejecuta el cmdlet Start-AzAutomationDscCompilationJob para compilar la configuración TestConfig en una configuración de nodo denominada TestConfig.WebServer en tu cuenta de Automatización.

$startAzAutomationDscCompilationJobSplat = @{
    ConfigurationName = 'TestConfig'
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
}
Start-AzAutomationDscCompilationJob @startAzAutomationDscCompilationJobSplat

Registro de una máquina virtual que se va a administrar mediante State Configuration

Puede usar Azure Automation State Configuration para administrar máquinas virtuales de Azure (clásicas y Resource Manager), máquinas virtuales locales, máquinas Linux, máquinas virtuales de AWS y máquinas físicas locales. En este artículo, tratamos cómo registrar solo Azure Resource Manager máquinas virtuales. Para obtener información sobre cómo registrar otros tipos de máquinas, consulte Integración de máquinas para la gestión mediante la Configuración de Estado de Automatización de Azure.

Llame al cmdlet Register-AzAutomationDscNode para registrar la máquina virtual con Azure Automation State Configuration como nodo administrado.

$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat

Especificación de opciones del modo de configuración

Use el cmdlet Register-AzAutomationDscNode para registrar una máquina virtual como un nodo administrado y especificar las propiedades de configuración. Por ejemplo, puede especificar que el estado de la máquina se aplique solo una vez; para ello, especifique ApplyOnly como valor de la propiedad ConfigurationMode. State Configuration no intenta aplicar la configuración después de la comprobación inicial.

$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
    ConfigurationMode = 'ApplyOnly'
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat```

You can also specify how often DSC checks the configuration state by using the
`ConfigurationModeFrequencyMins` property. For more information about DSC configuration settings,
see [Configuring the Local Configuration Manager][05].

```powershell
# Run a DSC check every 60 minutes
$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
    ConfigurationModeFrequencyMins = 60
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat```

## Assign a node configuration to a managed node

Now we can assign the compiled node configuration to the VM we want to configure.

```powershell
# Get the ID of the DSC node
$getAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Name = 'DscVm'
}
$node = Get-AzAutomationDscNode @getAzAutomationDscNodeSplat

# Assign the node configuration to the DSC node
$setAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    NodeConfigurationName = 'TestConfig.WebServer'
    NodeId = $node.Id
}
Set-AzAutomationDscNode @setAzAutomationDscNodeSplat

Esto asigna la configuración de nodo llamada TestConfig.WebServer al nodo DSC registrado DscVm. De forma predeterminada, se comprueba el cumplimiento de la configuración del nodo DSC cada 30 minutos. Para obtener información sobre cómo cambiar el intervalo de comprobación de cumplimiento, vea Configuring the Local Configuration Manager.

Comprobación del estado de cumplimiento de un nodo administrado

Puede obtener informes sobre el estado de cumplimiento de un nodo administrado mediante el cmdlet Get-AzAutomationDscNodeReport.

# Get the ID of the DSC node
$getAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Name = 'DscVm'
}
$node = Get-AzAutomationDscNode @getAzAutomationDscNodeSplat

# Get an array of status reports for the DSC node
$getAzAutomationDscNodeReportSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    NodeId = $node.Id
}
$reports = Get-AzAutomationDscNodeReport @getAzAutomationDscNodeReportSplat

# Display the most recent report
$reports[0]

Pasos siguientes