Compartir a través de


Control de las actualizaciones mediante configuraciones de mantenimiento y la CLI de Azure

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

Puede usar la característica Configuraciones de mantenimiento para controlar cuándo aplicar actualizaciones de plataforma a varios recursos de Azure. En este artículo se describen las opciones de la CLI de Azure para usar esta característica. Para obtener más información sobre las ventajas de usar configuraciones de mantenimiento, sus limitaciones y otras opciones de administración, consulte Administración de actualizaciones de plataforma con Configuraciones de mantenimiento.

Importante

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

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.

az group create \
   --location eastus \
   --name myMaintenanceRG

Después de crear el grupo de recursos, use az maintenance configuration create para crear una configuración de mantenimiento.

Host

En este ejemplo se crea una configuración de mantenimiento denominada myConfig con ámbito para hospedar máquinas, con una ventana programada de 5 horas el cuarto lunes de cada mes:

az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope host \
   --location eastus \
   --maintenance-window-duration "05:00" \
   --maintenance-window-recur-every "Month Fourth Monday" \
   --maintenance-window-start-date-time "2020-12-30 08:00" \
   --maintenance-window-time-zone "Pacific Standard Time" 

El uso de --maintenance-scope host garantiza que la configuración de mantenimiento se utiliza para controlar las actualizaciones de la infraestructura de host. Si 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.

Para comprobar si creó correctamente la configuración de mantenimiento, puede consultar las configuraciones de mantenimiento disponibles mediante az maintenance configuration list:

az maintenance configuration list 
   --query "[].{Name:name, ID:id}" 
   --output table 

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

  • Diaria: valor maintenance-window-recur-every de "Day" o "3Days".
  • Semanal: valor maintenance-window-recur-every de "3Weeks" o "Week Saturday,Sunday".
  • Mensual: unmaintenance-window-recur-every valor de "Month day23,day24" o "Month Last Sunday" o Month Fourth Monday.

Conjuntos de escalado de máquinas virtuales

En este ejemplo se crea una configuración de mantenimiento denominada myConfig con el ámbito de imagen del sistema operativo para los conjuntos de escalado de máquinas virtuales, con una ventana programada de 5 horas el cuarto lunes de cada mes:

az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope osimage \
   --location eastus \
   --maintenance-window-duration "05:00" \
   --maintenance-window-recur-every "Month Fourth Monday" \
   --maintenance-window-start-date-time "2020-12-30 08:00" \
   --maintenance-window-time-zone "Pacific Standard Time" 

VM invitadas

En este ejemplo se crea una configuración de mantenimiento denominada myConfig con ámbito a máquinas invitadas (máquinas virtuales y servidores habilitados para Azure Arc), con una ventana programada de 2 horas cada 20 días. Obtenga más información sobre las configuraciones de mantenimiento en máquinas virtuales invitadas.

az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope InGuestPatch \
   --location eastus \
   --maintenance-window-duration "02:00" \
   --maintenance-window-recur-every "20days" \
   --maintenance-window-start-date-time "2022-12-30 07:00" \
   --maintenance-window-time-zone "Pacific Standard Time" \
   --install-patches-linux-parameters package-name-masks-to-exclude="ppt" package-name-masks-to-include="apt" classifications-to-include="Other" \
   --install-patches-windows-parameters kb-numbers-to-exclude="KB123456" kb-numbers-to-include="KB123456" classifications-to-include="FeaturePack" \
   --reboot-setting "IfRequired" \
   --extension-properties InGuestPatchMode="User"

Asignación de la configuración

Use az maintenance assignment create para asignar la configuración a la máquina.

Máquina virtual aislada

Aplique la configuración a una máquina virtual de host aislada mediante el identificador de la configuración. Especifique --resource-type virtualMachines. Proporcione el nombre de la máquina virtual para --resource-name, el grupo de recursos de la máquina virtual para --resource-groupy la ubicación de la máquina virtual para --location.

az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

Host dedicado

Para aplicar una configuración a un host dedicado, debe incluir --resource-type hosts, --resource-parent-name con el nombre del grupo host y --resource-parent-type hostGroups.

El parámetro --resource-id es el identificador del host. Puede usar az-vm-host-get-instance-view para obtener el identificador del host dedicado.

az maintenance assignment create \
   --resource-group myDHResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myDhResourceGroup/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig" \
   --location eastus \
   --resource-parent-name myHostGroup \
   --resource-parent-type hostGroups 

Conjuntos de escalado de máquinas virtuales

az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVMSS \
   --resource-type virtualMachineScaleSets \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

VM invitadas

az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

Comprobación de la configuración

Puede comprobar que la configuración se aplicó correctamente o comprobar qué configuración se aplica actualmente mediante az maintenance assignment list.

Máquina virtual aislada

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

Host dedicado

az maintenance assignment list \
   --resource-group myDHResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parent-name myHostGroup \
   --resource-parent-type hostGroups \
   --query "[].{ResourceGroup:resourceGroup,configName:name}" \
   --output table

Conjuntos de escalado de máquinas virtuales

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

VM invitadas

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

Búsqueda de actualizaciones pendientes

Use az maintenance update list para ver si hay actualizaciones pendientes. Actualice --subscription para que sea el identificador de la suscripción que contiene la máquina virtual.

Si no hay actualizaciones, el comando devuelve un mensaje de error que contiene el texto Resource not found...StatusCode: 404.

Si hay actualizaciones, el comando devuelve solo una, incluso si hay varias actualizaciones pendientes. Los datos de esta actualización se devuelven en un objeto :

[
  {
    "impactDurationInSec": 9,
    "impactType": "Freeze",
    "maintenanceScope": "Host",
    "notBefore": "2020-03-03T07:23:04.905538+00:00",
    "resourceId": "/subscriptions/9120c5ff-e78e-4bd0-b29f-75c19cadd078/resourcegroups/DemoRG/providers/Microsoft.Compute/hostGroups/demoHostGroup/hosts/myHost",
    "status": "Pending"
  }
]

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:

az maintenance update list \
   --subscription {subscription ID} \
   --resource-group myMaintenanceRg \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --output table

Host dedicado

Compruebe si hay actualizaciones pendientes para un host dedicado. En este ejemplo, se aplica a la salida formato de tabla para facilitar la lectura. Reemplace los valores de los recursos por los suyos propios.

az maintenance update list \
   --subscription {subscription ID} \
   --resource-group myHostResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parentname myHostGroup \
   --resource-parent-type hostGroups \
   --output table

Aplicación de actualizaciones

Use az maintenance apply update para aplicar actualizaciones pendientes. Si se ejecuta correctamente, este comando devuelve JSON que contiene los detalles de la actualización. Las llamadas para aplicar actualizaciones pueden tardar hasta 2 horas en completarse.

Máquina virtual aislada

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

az maintenance applyupdate create \
   --subscription {subscriptionID} \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute

Host dedicado

Aplicar actualizaciones a un host dedicado:

az maintenance applyupdate create \
   --subscription {subscriptionID} \
   --resource-group myHostResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parent-name myHostGroup \
   --resource-parent-type hostGroups

Conjuntos de escalado de máquinas virtuales

Aplicar actualizaciones a un conjunto de escalado:

az maintenance applyupdate create \
   --subscription {subscriptionID} \
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type virtualMachineScaleSets \
   --provider-name Microsoft.Compute

Comprobación del estado de aplicación de las actualizaciones

Puede comprobar el progreso de las actualizaciones mediante az maintenance applyupdate get.

Para ver los resultados de la última actualización, use default como nombre de actualización. O reemplace myUpdateName por el nombre de la actualización que se devolvió al ejecutar az maintenance applyupdate create.

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 inició la actualización como si la plataforma la inició 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

az maintenance applyupdate get \
   --subscription {subscriptionID} \ 
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --apply-update-name myUpdateName \
   --query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
   --output table

Host dedicado

az maintenance applyupdate get \
   --subscription {subscriptionID} \ 
   --resource-group myMaintenanceRG \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parent-name myHostGroup \ 
   --resource-parent-type hostGroups \
   --apply-update-name myUpdateName \
   --query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
   --output table

Conjuntos de escalado de máquinas virtuales

az maintenance applyupdate get \
   --subscription {subscriptionID} \ 
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type virtualMachineScaleSets \
   --provider-name Microsoft.Compute \
   --apply-update-name myUpdateName \
   --query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
   --output table

Eliminación de una configuración de mantenimiento

Para eliminar una configuración de mantenimiento, use az maintenance configuration delete. Al eliminar la configuración se quita el control de mantenimiento de los recursos asociados.

az maintenance configuration delete \
   --subscription 1111abcd-1a11-1a2b-1a12-123456789abc \
   -resource-group myResourceGroup \
   --resource-name myConfig

Pasos siguientes

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