Como gerenciar programaticamente atualizações para VMs do Azure
Este artigo orienta você pelo processo de uso da API REST do Azure para disparar uma avaliação e uma implantação de atualização em sua máquina virtual do Azure com o Azure Update Manager no Azure. Se você é novo no Update Manager e deseja saber mais, consulte Visão geral do Azure Update Manager. Para usar a API REST do Azure para gerenciar servidores habilitados para Arc, consulte Como trabalhar programaticamente com servidores habilitados para Arc.
O Azure Update Manager no Azure permite que você use a API REST do Azure para acesso programaticamente. Além disso, você pode usar os comandos REST apropriados do Azure PowerShell e da CLI do Azure.
O suporte para a API REST do Azure para gerenciar VMs do Azure está disponível por meio da extensão de máquina virtual do Update Manager.
Avaliação de atualização
Para disparar uma avaliação de atualização em sua VM do Azure, especifique a seguinte solicitação POST:
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`
Para especificar a solicitação POST, você pode usar o comando Azure CLI az vm assess-patchs .
az vm assess-patches -g MyResourceGroup -n MyVm
Atualizar implantação
Para disparar uma implantação de atualização para sua VM do Azure, especifique a seguinte solicitação POST:
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`
Corpo do pedido
A tabela a seguir descreve os elementos do corpo da solicitação:
Property | Description |
---|---|
maximumDuration |
Tempo máximo de execução da operação. Deve ser uma cadeia de caracteres de duração compatível com a ISO 8601, como PT4H (4 horas). |
rebootSetting |
Sinalize para indicar se a máquina deve ser reinicializada e se a instalação da atualização do SO convidado requer sua conclusão. Os valores aceitáveis são: IfRequired, NeverReboot, AlwaysReboot . |
windowsParameters |
Opções de parâmetro para atualização do SO convidado em VMs do Azure que executam um sistema operacional Microsoft Windows Server com suporte. |
windowsParameters - classificationsToInclude |
Lista de categorias/classificações a serem usadas para selecionar as atualizações a serem instaladas na máquina. Os valores aceitáveis são: Critical, Security, UpdateRollup, FeaturePack, ServicePack, Definition, Tools, Updates |
windowsParameters - kbNumbersToInclude |
Lista de IDs KB do Windows Update que devem ser instalados. Todas as atualizações pertencentes às classificações fornecidas na classificationsToInclude lista serão instaladas. kbNumbersToInclude é uma lista opcional de KBs específicos a serem instalados, além das classificações. Por exemplo: 1234 |
windowsParameters - kbNumbersToExclude |
Lista de IDs KB do Windows Update que não devem ser instaladas. Este parâmetro substitui windowsParameters - classificationsToInclude , o que significa que um ID KB do Windows Update especificado aqui não será instalado, mesmo que pertença à classificação fornecida em classificationsToInclude parâmetro. |
maxPatchPublishDate |
Isso é usado para instalar patches que foram publicados em ou antes dessa data máxima de publicação. |
linuxParameters |
Opções de parâmetro para atualização do SO convidado em VMs do Azure que executam um sistema operacional de servidor Linux com suporte. |
linuxParameters - classificationsToInclude |
Lista de categorias/classificações a serem usadas para selecionar as atualizações a serem instaladas na máquina. Os valores aceitáveis são: Critical, Security, Other |
linuxParameters - packageNameMasksToInclude |
Lista de pacotes Linux que devem ser instalados. Todas as atualizações pertencentes às classificações fornecidas na classificationsToInclude lista serão instaladas. packageNameMasksToInclude é uma lista opcional de nomes de pacotes a serem instalados, além das classificações. Por exemplo: mysql, libc=1.0.1.1, kernel* |
linuxParameters - packageNameMasksToExclude |
Lista de atualizações que não devem ser instaladas. Este parâmetro substitui linuxParameters - packageNameMasksToExclude , o que significa que um pacote especificado aqui não será instalado mesmo que pertença à classificação fornecida no classificationsToInclude parâmetro. |
Para especificar a solicitação POST, você pode usar a seguinte chamada da API REST do Azure com parâmetros e 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"
]
}
}'
Criar um cronograma de configuração de manutenção
Para criar uma agenda de configuração de manutenção, especifique a seguinte solicitação PUT:
PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`
Corpo do pedido
A tabela a seguir descreve os elementos do corpo da solicitação:
Property | Description |
---|---|
id |
Identificador totalmente qualificado do recurso |
location |
Obtém ou define a localização do recurso |
name |
O nome do recurso |
properties.extensionProperties |
Obtém ou define extensionProperties of the maintenanceConfiguration |
properties.maintenanceScope |
Obtém ou define manutençãoEscopo da configuração |
properties.maintenanceWindow.duration |
Duração da janela de manutenção no formato HH:MM. Se não for fornecido, o valor padrão será usado com base no escopo de manutenção fornecido. Exemplo: 05:00. |
properties.maintenanceWindow.expirationDateTime |
Data de expiração efetiva da janela de manutenção no formato AAAA-MM-DD hh:mm. A janela é criada no fuso horário fornecido ao horário de verão de acordo com esse fuso horário. A data de expiração deve ser definida para uma data futura. Se não for fornecido, é definido para a data/hora máxima 9999-12-31 23:59:59. |
properties.maintenanceWindow.recurEvery |
Taxa na qual se espera que uma janela de manutenção se repita. A taxa pode ser expressa em horários diários, semanais ou mensais. Os horários diários são formatados como recorrentes: [Frequência como inteiro]['Dia(s)']. Se nenhuma frequência for fornecida, a frequência padrão será 1. Exemplos de horários diários são recorrentes: Dia, recorrentes: 3Dias. Os horários semanais são formatados como recorrentes: [Frequência como inteiro]['Semana(s)'] [Lista opcional separada por vírgulas dos dias úteis de segunda a domingo]. Exemplos de programação semanal são recorrentes: 3Weeks, recurEvery: Week sábado, domingo. As agendas mensais são formatadas como [Frequência como inteiro]['Mês(es)'] [Lista separada por vírgulas de dias do mês] ou [Frequência como inteiro]['Mês(es)'] [Semana do Mês (Primeiro, Segundo, Terceiro, Quarto, Último)] [Dia da Semana de segunda a domingo]. Exemplos de programação mensal são recorrentesEvery: Month, recurEvery: 2Months, recurEvery: Month day23, day24, recurEvery: Month Last Sunday, recurEvery: Month Fourth Monday. |
properties.maintenanceWindow.startDateTime |
Data de início efetiva da janela de manutenção no formato AAAA-MM-DD hh:mm. Você pode definir a data de início como a data atual ou a data futura. A janela será criada no fuso horário fornecido e ajustada ao horário de verão de acordo com esse fuso horário. |
properties.maintenanceWindow.timeZone |
Nome do fuso horário. A lista de fusos horários pode ser obtida executando [System.TimeZoneInfo]:GetSystemTimeZones() no PowerShell. Exemplo: Hora Padrão do Pacífico, UTC, Hora Padrão da Europa W., Hora Padrão da Coreia, Cen. Hora Padrão da Austrália. |
properties.namespace |
Obtém ou define o namespace do recurso |
properties.visibility |
Obtém ou define a visibilidade da configuração. O valor padrão é 'Custom' |
systemData |
Metadados do Azure Resource Manager contendo informações createdBy e modifiedBy. |
tags |
Obtém ou define tags do recurso |
type |
Tipo de recurso |
Para especificar a solicitação POST, você pode usar a seguinte chamada da API REST do Azure com parâmetros e 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"
]
}
}
}
}'
Associar uma VM a uma agenda
Para associar uma VM a uma agenda de configuração de manutenção, especifique a seguinte solicitação PUT:
PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`
Para especificar a solicitação PUT, você pode usar a seguinte chamada da API REST do Azure com parâmetros e 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"
}'
Remover máquina da programação
Para remover uma máquina da agenda, obtenha todos os nomes de atribuição de configuração para a máquina que foram criados para associar a máquina à agenda atual do Gráfico de Recursos do Azure, conforme listado:
maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id
Depois de obter o nome acima, exclua a atribuição de configuração seguindo a solicitação DELETE -
DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`
Próximos passos
- Para exibir os logs de avaliação e implantação de atualizações gerados pelo Update Manager, consulte logs de consulta.
- Para solucionar problemas, consulte Solucionar problemas do Update Manager.