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.