Compartir a través de


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 el Administrador de actualizaciones de Azure en Azure. Si no está familiarizado con el Administrador de actualizaciones y quiere saber más, consulte la introducción al Administrador de actualizaciones de Azure. Para usar la API REST de Azure para administrar servidores habilitados para Arc, consulte Uso de servidores habilitados para Arc mediante programación.

El Administrador de actualizaciones de Azure en Azure le permite usar la API REST de Azure para el acceso 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 mediante la extensión de máquina virtual del Administrador de actualizaciones.

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 Indicador para especificar si la máquina se debe reiniciar y si se requiere para finalizar la instalación de actualizaciones en el sistema operativo invitado. 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 no se instalará el identificador de KB de Windows Update especificado aquí aunque pertenezca a la clasificación proporcionada en el parámetro classificationsToInclude.
maxPatchPublishDate Se usa para instalar revisiones publicadas en la fecha máxima de publicación indicada o con anterioridad a esta.
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 no se instalará el paquete especificado aquí aunque pertenezca a la clasificación proporcionada en el parámetro classificationsToInclude.

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 usará el valor predeterminado según el á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 y se ajusta 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 fecha y hora: 31-12-9999 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 un número entero][«Día(s)»]. Si no se proporciona ninguna frecuencia, la frecuencia predeterminada es 1. Ejemplos de programación diaria son recurEvery: Day, recurEvery: 3Days. Las programaciones semanales tienen el formato recurEvery: [Frecuencia como un número entero][«Semana(s)»] [Lista opcional separada por comas de los días laborables de lunes a domingo]. 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]. 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. La fecha de inicio se puede establecer en la fecha actual o en una 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview

{
  "properties": {
    "maintenanceConfigurationId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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