Share via


Administración mediante programación de las actualizaciones de las máquinas virtuales de Azure

En este artículo se explica el proceso de uso de la API REST de Azure para desencadenar una evaluación y una implementación de actualizaciones en la máquina virtual de Azure con Azure Update Manager en Azure. Si no está familiarizado con Update Manager y quiere obtener más información, consulte introducción a Azure Update Manager. Para usar la API REST de Azure para administrar servidores habilitados para Arc, consulte Uso de servidores habilitados para Arc mediante programación.

Azure Update Manager en Azure permite usar la API REST de Azure para acceder mediante programación. Además, puede usar los comandos REST adecuados de Azure PowerShell y la CLI de Azure.

La compatibilidad con la API REST de Azure para administrar máquinas virtuales de Azure está disponible a través de la extensión de máquina virtual de Update Manager.

Evaluación de la actualización

Para desencadenar una evaluación de actualizaciones en la máquina virtual de Azure, especifique la siguiente solicitud POST:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`

Para especificar la solicitud POST, puede usar el comando az vm assess-patches de la CLI de Azure.

az vm assess-patches -g MyResourceGroup -n MyVm

Implementación de actualizaciones

Para desencadenar una implementación de actualizaciones en la máquina virtual de Azure, especifique la siguiente solicitud POST:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`

Cuerpo de la solicitud

En la tabla siguiente se describen los elementos del cuerpo de la solicitud:

Propiedad Descripción
maximumDuration Cantidad máxima de tiempo que se ejecuta la operación. Debe ser una cadena de duración compatible con ISO 8601 como, por ejemplo, PT4H (4 horas).
rebootSetting Marca al estado si se debe reiniciar la máquina y si la instalación de la actualización del sistema operativo invitado lo requiere para su finalización. Los valores aceptables son: IfRequired, NeverReboot, AlwaysReboot.
windowsParameters Opciones de parámetros para la actualización del sistema operativo invitado en máquinas virtuales de Azure que ejecutan un sistema operativo compatible con Microsoft Windows Server.
windowsParameters - classificationsToInclude Lista de categorías o clasificaciones que se van a usar para seleccionar las actualizaciones que se van a instalar en la máquina. Los valores aceptables son: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude Lista de identificadores de KB de Windows Update que se deben instalar. Se instalarán todas las actualizaciones que pertenecen a las clasificaciones proporcionadas en la lista classificationsToInclude. kbNumbersToInclude es una lista opcional de KB específicos que se van a instalar además de las clasificaciones. Por ejemplo: 1234
windowsParameters - kbNumbersToExclude Lista de identificadores de KB de Windows Update que no se deben instalar. Este parámetro invalida windowsParameters - classificationsToInclude, lo que significa que un identificador de KB de Windows Update especificado aquí no se instalará aunque pertenezca a la clasificación proporcionada en classificationsToInclude el parámetro .
linuxParameters Opciones de parámetros para la actualización del sistema operativo invitado en máquinas virtuales de Azure que ejecutan un sistema operativo con Linux Server.
linuxParameters - classificationsToInclude Lista de categorías o clasificaciones que se van a usar para seleccionar las actualizaciones que se van a instalar en la máquina. Los valores aceptables son: Critical, Security, Other
linuxParameters - packageNameMasksToInclude Lista de paquetes de Linux que se deben instalar. Se instalarán todas las actualizaciones que pertenecen a las clasificaciones proporcionadas en la lista classificationsToInclude. packageNameMasksToInclude es una lista opcional de los nombres de los paquetes que se van a instalar además de las clasificaciones. Por ejemplo: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude Lista de actualizaciones que no se deben instalar. Este parámetro invalida linuxParameters - packageNameMasksToExclude, lo que significa que un paquete especificado aquí no se instalará aunque pertenezca a la clasificación proporcionada en el classificationsToInclude parámetro .

Para especificar la solicitud POST, puede usar la siguiente llamada a la API REST de Azure con parámetros y valores válidos.

POST on 'subscriptions/{subscriptionId}/resourceGroups/acmedemo/providers/Microsoft.Compute/virtualMachines/ameacr/installPatches?api-version=2020-12-01

{
    "maximumDuration": "PT120M",
    "rebootSetting": "IfRequired",
    "windowsParameters": {
      "classificationsToInclude": [
        "Security",
        "UpdateRollup",
        "FeaturePack",
        "ServicePack"
      ],
      "kbNumbersToInclude": [
        "11111111111",
        "22222222222222"
      ],
      "kbNumbersToExclude": [
        "333333333333",
        "55555555555"
      ]
    }
  }'

Creación de una programación de la configuración de mantenimiento

Para crear una programación de la configuración de mantenimiento, especifique la siguiente solicitud PUT:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`

Cuerpo de la solicitud

En la tabla siguiente se describen los elementos del cuerpo de la solicitud:

Propiedad Descripción
id Identificador completamente calificado del recurso
location Obtiene o establece la ubicación del recurso
name Nombre del recurso
properties.extensionProperties Obtiene o establece el valor de extensionProperties de maintenanceConfiguration
properties.maintenanceScope Obtiene o establece maintenanceScope en la configuración
properties.maintenanceWindow.duration Duración de la ventana de mantenimiento en formato HH:MM. Si no se proporciona, se usa el valor predeterminado en función del ámbito de mantenimiento proporcionado. Ejemplo: 05:00.
properties.maintenanceWindow.expirationDateTime Fecha de expiración en vigor de la ventana de mantenimiento en formato AAAA-MM-DD hh:mm. La ventana se crea en la zona horaria proporcionada al horario de verano según esa zona horaria. La fecha de expiración debe establecerse en una fecha futura. Si no se proporciona, se establece en el valor máximo de datetime 9999-12-31 23:59:59.
properties.maintenanceWindow.recurEvery Frecuencia a la que se espera que se repita una ventana de mantenimiento. La frecuencia puede expresarse como programaciones diarias, semanales o mensuales. Las programaciones diarias tienen el formato recurEvery: [Frecuencia como entero]['Día(s)']. Si no se proporciona ninguna frecuencia, la frecuencia predeterminada es 1. Los ejemplos de programación diaria son recurEvery: Day, recurEvery: 3Days. Las programaciones semanales tienen el formato recurEvery: [Frecuencia como entero]['Semanas'] [Lista opcional separada por comas de días laborables de lunes a domingo]. Los ejemplos de programación semanal son recurEvery: 3Weeks, recurEvery: Week Saturday, Sunday. Las programaciones mensuales tienen el formato [Frecuencia como un número entero][«Mes(es)»] [Lista separada por comas de los días del mes] o [Frecuencia como un número entero][«Mes(es)»] [Día del mes (Primero, Segundo, Tercero, Cuarto, Último)] [Día de la semana de lunes a domingo]. Los ejemplos de programación mensual son recurEvery: Month, recurEvery: 2Months, recurEvery: Month day23, day24, recurEvery: Month Last Sunday, recurEvery: Month Fourth Monday.
properties.maintenanceWindow.startDateTime Fecha de inicio en vigor de la ventana de mantenimiento en formato AAAA-MM-DD hh:mm. Puede establecer la fecha de inicio en la fecha actual o en la fecha futura. La ventana se creará en la zona horaria proporcionada y se ajustará al horario de verano según esa zona horaria.
properties.maintenanceWindow.timeZone Nombre de la zona horaria. La lista de zonas horarias se puede obtener ejecutando [System.TimeZoneInfo]:GetSystemTimeZones() en PowerShell. Ejemplo: hora estándar del Pacífico, hora universal coordinada, hora estándar de Europa, hora estándar de Corea, Cen. Hora estándar de Australia.
properties.namespace Obtiene o establece el espacio de nombres del recurso
properties.visibility Obtiene o establece la visibilidad de la configuración. El valor predeterminado es «Personalizado»
systemData Metadatos de Azure Resource Manager que contienen información sobre los valores de createdBy y modifiedBy.
tags Obtiene o establece las etiquetas del recurso
type Tipo de recurso

Para especificar la solicitud POST, puede usar la siguiente llamada a la API REST de Azure con parámetros y valores válidos.

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestAdv2?api-version=2021-09-01-preview

{
  "location": "eastus2euap",
  "properties": {
    "namespace": null,
    "extensionProperties": {
      "InGuestPatchMode" : "User"
    },
    "maintenanceScope": "InGuestPatch",
    "maintenanceWindow": {
      "startDateTime": "2021-08-21 01:18",
      "expirationDateTime": "2221-05-19 03:30",
      "duration": "01:30",
      "timeZone": "India Standard Time",
      "recurEvery": "Day"
    },
    "visibility": "Custom",
    "installPatches": {
      "rebootSetting": "IfRequired",
      "windowsParameters": {
        "classificationsToInclude": [
          "Security",
          "Critical",
          "UpdateRollup"
        ]
      },
      "linuxParameters": {
        "classificationsToInclude": [
          "Other"
        ]
      }
    }
  }
}'

Asociación de una máquina virtual con una programación

Para asociar una máquina virtual con una programación de la configuración de mantenimiento, especifique la siguiente solicitud PUT:

PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

Para especificar la solicitud PUT, puede usar la siguiente llamada a la API REST de Azure con parámetros y valores válidos.

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview

{
  "properties": {
    "maintenanceConfigurationId": "/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourcegroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestIntermediate2"
  },
  "location": "eastus2euap"
}'

Eliminación de la máquina de la programación

Para quitar una máquina de la programación, obtenga todos los nombres de asignación de configuración de la máquina que se crearon para asociar la máquina a la programación actual de Azure Resource Graph, como se muestra en la lista:

maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id

Después de obtener el nombre anterior, elimine la asignación de configuración siguiendo la solicitud DELETE:

DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

Pasos siguientes

  • Para ver los registros de implementación y evaluación de actualizaciones generados por Update Manager, consulte registros de consulta.
  • Para solucionar problemas, consulte Solución de problemas de Update Manager.