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.