Como gerenciar atualizações programaticamente 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, confira 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 adequados 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 Gerenciador de Atualizações.
Avaliação de atualização
Para disparar uma avaliação de atualização na 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
Implantação de atualizações
Para disparar uma implantação de atualização na 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 da solicitação
A tabela a seguir descreve os elementos do corpo da solicitação:
Propriedade | Descrição |
---|---|
maximumDuration |
Quantidade máxima de tempo em que a operação é executada. Ela precisa ser uma cadeia de caracteres de duração em conformidade 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 executando um sistema operacional do Microsoft Windows Server com suporte. |
windowsParameters - classificationsToInclude |
Lista de categorias/classificações a serem usadas para selecionar as atualizações a serem instaladas no computador. Os valores aceitáveis são: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates |
windowsParameters - kbNumbersToInclude |
Lista de Ids de KB do Windows Update que devem ser instaladas. Todas as atualizações pertencentes às classificações fornecidas na lista classificationsToInclude serão instaladas. kbNumbersToInclude é uma lista opcional de KBs específicas a serem instaladas além das classificações. Por exemplo: 1234 |
windowsParameters - kbNumbersToExclude |
Lista de Ids de KB do Windows Update que não devem ser instaladas. Esse parâmetro substitui windowsParameters - classificationsToInclude , o que significa que uma ID de KB do Windows Update especificada aqui não será instalada mesmo que pertença à classificação fornecida em classificationsToInclude parâmetro. |
linuxParameters |
Opções de parâmetro para atualização do SO convidado em VMs do Azure executando um sistema operacional do servidor Linux com suporte. |
linuxParameters - classificationsToInclude |
Lista de categorias/classificações a serem usadas para selecionar as atualizações a serem instaladas no computador. 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 lista classificationsToInclude serão instaladas. packageNameMasksToInclude é uma lista opcional de nomes de pacote 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. Esse parâmetro substitui linuxParameters - packageNameMasksToExclude , o que significa que um pacote especificado aqui não será instalado mesmo que pertença à classificação fornecida sob classificationsToInclude parâmetro. |
Para especificar a solicitação POST, você pode usar a chamada à API REST do Azure a seguir 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 agendamento de configuração de manutenção
Para criar um agendamento 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 da solicitação
A tabela a seguir descreve os elementos do corpo da solicitação:
Propriedade | Descrição |
---|---|
id |
Identificador totalmente qualificado do recurso |
location |
Obter ou definir local do recurso |
name |
Nome do recurso |
properties.extensionProperties |
Obter ou definir a extensionProperties da maintenanceConfiguration |
properties.maintenanceScope |
Obter ou definir maintenanceScope 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 validade efetiva da janela de manutenção no formato DD-MM-AAAA 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 validade precisa ser definida para uma data futura. Se não for fornecido, é definido para o datetime máximo 9999-12-31 23:59:59. |
properties.maintenanceWindow.recurEvery |
Taxa na qual é esperada que uma janela de manutenção se repita. A taxa pode ser expressa como agendamento diário, semanal ou mensal. As agendas diárias são formatadas como recurEvery: [Frequency as integer]['Day(s)']. Se nenhuma frequência for fornecida, a frequência padrão será 1. Exemplos de agendamento diário são recurEvery: Day, recurEvery: 3Days. As agendas semanais são formatadas como recorrentes: [Frequência como inteiro]['Semana(s)'] [Lista separada por vírgula opcional de dias úteis de segunda a domingo]. Exemplos de programação semanal são recurEvery: 3Weeks, recurEvery: Week Saturday, Sunday. Os agendamentos mensais são formatados como [Frequência como inteiro]['Meses'] [Lista separada por vírgulas de dias do mês] ou [Frequência como inteiro]['Meses'] [Semana do mês (Primeiro, Segunda, Terceira, Quarta, Última)] [Dia da Semana de segunda a domingo]. Exemplos de agendamento mensal são recurEvery: 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 DD-MM-AAAA HH:MM. Você pode definir a data de início para a data atual ou 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 Oficial do Pacífico, UTC, Hora Oficial do Oeste Europeu, Hora Oficial da Coreia do Sul, Cen. Hora Oficial 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 |
Os metadados do Azure Resource Manager que contêm as informações createdBy e modifiedBy. |
tags |
Obtém ou define as marcas do recurso |
type |
Tipo do recurso |
Para especificar a solicitação POST, você pode usar a chamada à API REST do Azure a seguir com parâmetros e 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"
]
}
}
}
}'
Associar uma VM a um agendamento
Para associar um agendamento de configuração de manutenção a uma VM, 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 chamada à API REST do Azure a seguir com parâmetros e 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"
}'
Remover a 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óximas etapas
- Para exibir os logs de avaliação e implantação de atualização gerados pelo Update Manager, consulte logs de consulta.
- Para solucionar problemas, consulte Solucionar problemas do Update Manager.