Configuración de máquinas en un estado deseado

Nota:

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

Precaución

DSC de Automatización de Azure 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 dichos servidores se encuentran en el estado especificado a lo largo del tiempo.

  • Incorporación de una máquina virtual para su administración por DSC de Azure Automation
  • Carga de una configuración en Azure Automation
  • Compilación de 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

Compatibilidad con configuraciones parciales

State Configuration de Azure Automation admite el uso de 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 cuenta de Automation. 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.

Inicio de sesión en Azure

Inicie sesión en la suscripción a Azure con el cmdlet Connect-AzAccount y siga las instrucciones de la 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 en 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 = $ture
}
Import-AzAutomationDscConfiguration @importAzAutomationDscConfigurationSplat

Compilación de 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.

Llame al cmdlet Start-AzAutomationDscCompilationJob para compilar la configuración TestConfig en una configuración de nodo denominada TestConfig.WebServer de la cuenta de Automation.

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

Registro de una máquina virtual para su administración mediante State Configuration

Puede usar Azure Automation State Configuration para administrar máquinas virtuales de Azure (tanto clásicas como de Resource Manager), máquinas virtuales locales, máquinas Linux, máquinas virtuales de AWS y máquinas físicas locales. En este artículo, se explicará cómo registrar solo máquinas virtuales de Azure Resource Manager. Para más información sobre el registro de otros tipos de máquinas, consulte Incorporación de máquinas para administrarlas con Azure Automation State Configuration.

Llame al cmdlet Register-AzAutomationDscNode para registrar la máquina virtual con State Configuration de Azure Automation 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, consulte Configuración del administrador de configuración Local.

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