Compartir a través de


Control de las actualizaciones mediante configuraciones de mantenimiento y Azure PowerShell

Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles ✔️ Conjuntos de escalado uniformes

Use la característica Configuraciones de mantenimiento para controlar cuándo aplicar actualizaciones de plataforma a varios recursos de Azure. En este artículo se abordan las opciones de Azure PowerShell para hosts dedicados y máquinas virtuales aisladas (VM). Para obtener más información sobre las ventajas de usar la característica Configuraciones de mantenimiento, sus limitaciones y otras opciones de administración, consulte Administración de las actualizaciones de la plataforma con Configuraciones de mantenimiento.

Si busca información sobre las configuraciones de mantenimiento de conjuntos de escalado, consulte Control de mantenimiento de conjuntos de escalado de máquinas virtuales de Azure.

Importante

Los ámbitos específicos admiten determinados tipos y programaciones de máquinas. Asegúrese de seleccionar el ámbito adecuado para la máquina virtual.

Habilite el módulo de Azure PowerShell

Asegúrese de que PowerShellGet esté actualizado:

Install-Module -Name PowerShellGet -Repository PSGallery -Force

Instale el módulo de Azure PowerShell Az.Maintenance:

Install-Module -Name Az.Maintenance

Compruebe que se ejecute la versión más reciente de Az.Maintenance (versión 1.2.0):

Get-Module -ListAvailable -Name Az.Maintenance

Asegúrese de que se esté ejecutando la versión adecuada de Az.Maintenance:

Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0

Si se va a instalar localmente, asegúrese de abrir el símbolo del sistema de Azure PowerShell como administrador.

Es posible que se le pida que confirme que desea realizar la instalación desde un repositorio que no es de confianza. Escriba Y o seleccione Sí a todo para instalar el módulo.

Creación de una configuración de mantenimiento

El primer paso para crear una configuración de mantenimiento consiste en crear un grupo de recursos como contenedor para la configuración. En este ejemplo, se crea un grupo de recursos denominado myMaintenanceRG en eastus. Si ya tiene un grupo de recursos que desea usar, puede omitir esta parte y reemplazar el nombre del grupo de recursos por el que posee en el resto de los ejemplos.

New-AzResourceGroup `
   -Location eastus `
   -Name myMaintenanceRG

Puede declarar una ventana programada cuando Azure vaya a aplicar de forma recurrente las actualizaciones en los recursos. Después de crear una ventana programada, ya no será necesario aplicar las actualizaciones manualmente.

Puede expresar la periodicidad de mantenimiento como diaria, semanal o mensual. Estos son algunos ejemplos:

  • Diaria: valor RecurEvery de "Day" o "3Days".
  • Semanal: valor RecurEvery de "3Weeks" o "Week Saturday,Sunday".
  • Mensual: valor RecurEvery de "Month day23,day24", "Month Last Sunday" o "Month Fourth Monday".

Host

En este ejemplo, se crea una configuración de mantenimiento denominada myConfig cuyo ámbito es Host con una ventana programada de 5 horas el cuarto lunes de cada mes. El valor de duration de la programación de este ámbito debe ser al menos de dos horas. Para empezar, defina los parámetros de New-AzMaintenanceConfiguration:

$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "eastus"
$timeZone = "Pacific Standard Time" 
$duration = "05:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Month Fourth Monday"

Después de definir los parámetros, use el cmdlet New-AzMaintenanceConfiguration para crear la configuración:

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery

El uso de $scope = "Host" garantiza que la configuración de mantenimiento se utiliza para controlar las actualizaciones en las máquinas del host. Asegúrese de crear una configuración para el ámbito específico de las máquinas de destino. Obtenga más información sobre los ámbitos.

Imagen del sistema operativo

En este ejemplo, se crea una configuración de mantenimiento denominada myConfig con ámbito osimage con una ventana programada de 8 horas cada 5 días. El valor de duration de la programación de este ámbito debe ser de al menos 5 horas. Este ámbito permite un máximo de 7 días para la periodicidad de la programación.

$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time" 
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"

Después de definir los parámetros, use el cmdlet New-AzMaintenanceConfiguration para crear la configuración:

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery

Invitado

La adición más reciente a la característica Configuraciones de mantenimiento es el ámbito de InGuestPatch. En este ejemplo se muestra cómo crear una configuración de mantenimiento para un ámbito invitado mediante Azure PowerShell. Para obtener más información acerca de este ámbito, consulte invitado.

$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "eastus"
$timeZone = "Pacific Standard Time" 
$duration = "04:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Week Saturday, Sunday"
$WindowsParameterClassificationToInclude = "FeaturePack","ServicePack";
$WindowParameterKbNumberToInclude = "KB123456","KB123466";
$WindowParameterKbNumberToExclude = "KB123456","KB123466";
$RebootOption = "IfRequired";
$LinuxParameterClassificationToInclude = "Other";
$LinuxParameterPackageNameMaskToInclude = "apt","httpd";
$LinuxParameterPackageNameMaskToExclude = "ppt","userpk";

Después de definir los parámetros, use el cmdlet New-AzMaintenanceConfiguration para crear la configuración:

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery `
   -WindowParameterClassificationToInclude $WindowsParameterClassificationToInclude `
   -WindowParameterKbNumberToInclude $WindowParameterKbNumberToInclude `
   -WindowParameterKbNumberToExclude $WindowParameterKbNumberToExclude `
   -InstallPatchRebootSetting $RebootOption `
   -LinuxParameterPackageNameMaskToInclude $LinuxParameterPackageNameMaskToInclude `
   -LinuxParameterClassificationToInclude $LinuxParameterClassificationToInclude `
   -LinuxParameterPackageNameMaskToExclude $LinuxParameterPackageNameMaskToExclude `
   -ExtensionProperty @{"InGuestPatchMode"="User"}

Si se intenta crear una configuración con el mismo nombre, pero en otra ubicación, obtendrá un error. Los nombres de configuración deben ser únicos dentro de su grupo de recursos.

Compruebe si se crearon correctamente las configuraciones de mantenimiento mediante Get-AzMaintenanceConfiguration:

Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id

Asignación de la configuración

Después de crear la configuración, es posible que también desee asignar máquinas a ella mediante Azure PowerShell. Use el cmdlet New-AzConfigurationAssignment.

Máquina virtual aislada

Asigne la configuración a una máquina virtual con el id. de la configuración. Especifique -ResourceType VirtualMachines. Proporcione el nombre de la máquina virtual para -ResourceName y el grupo de recursos de la máquina virtual para -ResourceGroupName.

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVM" `
   -ResourceType "VirtualMachines" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Host dedicado

Para aplicar una configuración a un host dedicado, es necesario incluir -ResourceType hosts, -ResourceParentName con el nombre del grupo host y -ResourceParentType hostGroups:

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName myHostGroup `
   -ResourceParentType hostGroups `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Conjuntos de escalado de máquinas virtuales

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Invitado

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myGuest" `
   -ResourceType "VirtualMachines" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Búsqueda de actualizaciones pendientes

Para comprobar las actualizaciones pendientes, use Get-AzMaintenanceUpdate. Use -subscription para especificar la suscripción de Azure de la máquina virtual, en caso de que no sea la misma en la que inició sesión.

Si no hubiera ninguna actualización para mostrar, este comando no devolverá nada. De lo contrario, devolverá un objeto PSApplyUpdate:

{
   "maintenanceScope": "Host",
   "impactType": "Freeze",
   "status": "Pending",
   "impactDurationInSec": 9,
   "notBefore": "2020-02-21T16:47:44.8728029Z",
   "properties": {
      "resourceId": "/subscriptions/39c6cced-4d6c-4dd5-af86-57499cd3f846/resourcegroups/Ignite2019/providers/Microsoft.Compute/virtualMachines/MCDemo3"
} 

Máquina virtual aislada

Compruebe si hay actualizaciones pendientes para una máquina virtual aislada. En este ejemplo, la salida tiene el formato de tabla para mejorar la legibilidad:

Get-AzMaintenanceUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute" | Format-Table

Host dedicado

Compruebe si hay actualizaciones pendientes para un host dedicado. En este ejemplo, la salida tiene el formato de tabla para mejorar la legibilidad:

Get-AzMaintenanceUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName "Microsoft.Compute" | Format-Table

Conjuntos de escalado de máquinas virtuales

Get-AzMaintenanceUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute" | Format-Table

Aplicación de actualizaciones

Use New-AzApplyUpdate para aplicar las actualizaciones pendientes. La aplicación de llamadas de actualización puede tardar hasta 2 horas en completarse.

Este cmdlet solo funciona para los ámbitos de imagen del host y del sistema operativo. No funciona para el ámbito de invitado.

Máquina virtual aislada

Cree una solicitud para aplicar actualizaciones a una máquina virtual aislada:

New-AzApplyUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute"

Si se ejecuta correctamente, este comando devolverá un objeto PSApplyUpdate. Use el atributo Name en el comando Get-AzApplyUpdate para comprobar el estado de actualización, tal y como se describe más adelante en este artículo.

Host dedicado

Aplicar actualizaciones a un host dedicado:

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName Microsoft.Compute

Conjuntos de escalado de máquinas virtuales

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute"

Comprobación del estado de actualización

Para comprobar el estado de una actualización, use Get-AzApplyUpdate. Los comandos siguientes muestran el estado de la última actualización mediante default para el parámetro -ApplyUpdateName. Puede sustituir el nombre de la actualización (devuelto por el comando New-AzApplyUpdate) para obtener el estado de una actualización específica.

Este cmdlet solo funciona para los ámbitos de imagen del host y del sistema operativo. No funciona para el ámbito de invitado.

Status         : Completed
ResourceId     : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id             : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name           : default
Type           : Microsoft.Maintenance/applyUpdates

LastUpdateTime es la hora a la que finalizó la actualización, tanto si usted la inició como si fue la plataforma, porque no usó la ventana de mantenimiento automático. Si nunca se aplicó una actualización a través de configuraciones de mantenimiento, LastUpdateTime mostrará el valor predeterminado.

Máquina virtual aislada

Comprobar si hay actualizaciones para una máquina virtual específica:

Get-AzApplyUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute" `
  -ApplyUpdateName "applyUpdateName"

Host dedicado

Comprobar las actualizaciones para un host dedicado:

Get-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName "Microsoft.Compute" `
   -ApplyUpdateName "applyUpdateName"

Conjuntos de escalado de máquinas virtuales

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute" `
   -ApplyUpdateName "applyUpdateName"

Eliminación de una configuración de mantenimiento

Para eliminar una configuración de mantenimiento, use Remove-AzMaintenanceConfiguration:

Remove-AzMaintenanceConfiguration `
   -ResourceGroupName "myResourceGroup" `
   -Name "configName"

Pasos siguientes

Para obtener más información, consulte Mantenimiento de máquinas virtuales en Azure.