Como gerenciar atualizações programaticamente para VMs do Azure
Este artigo orienta você sobre o processo de uso da API REST do Azure para disparar uma avaliação e uma implantação de atualização em suas máquinas virtuais do Azure com o Gerenciador de Atualizações do Azure no Azure. Caso seja novo no Gerenciador de Atualizações e queira saber mais, confira a visão geral do Gerenciador de Atualizações do Azure. Para usar a API REST do Azure para gerenciar servidores habilitados para Arc, confira Como trabalhar programaticamente com servidores habilitados para Arc.
O Gerenciador de Atualizações do Azure no Azure permite usar a API REST do Azure para acesso de maneira programática. Além disso, você pode usar os comandos REST adequados do Azure PowerShell e da CLI do Azure.
O suporte da API REST do Azure para gerenciar VMs do Azure está disponível por meio da extensão da 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 de POST, use o comando aaz vm assess-patches da CLI do Azure.
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 |
Sinalizador para o estado se o computador deve ser reinicializado e se a instalação de atualização do sistema operacional convidado precisar dela para 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 se pertencer à classificação fornecida no parâmetro classificationsToInclude . |
maxPatchPublishDate |
Isso é usado para instalar patches que foram publicados em ou antes dessa data máxima publicada. |
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 se pertencer à classificação fornecida no parâmetro classificationsToInclude . |
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 fornecida, ela será definida como o datetime máximo 31/12/9999 23h59m59s59. |
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. Os agendamentos diários são formatados como recurEvery: [Frequência como inteiro]['Dias']. Se nenhuma frequência for fornecida, a frequência padrão será 1. Exemplos de agendamento diário são recurEvery: Day, recurEvery: 3Days. Os agendamentos semanais são formatados como recurEvery: [Frequência como inteiro]['Semanas'] [Lista opcional separada por vírgulas dos dias da semana de segunda a domingo]. Exemplos de agendamento semanal são recurEvery: 3semanas, recurEvery: semana sábado, domingo. 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: mês, recurEvery: 2 meses, recurEvery: dia do mês 23, dia 24, recurEvery: último domingo do mês, recurEvery: quarta segunda-feira do mês. |
properties.maintenanceWindow.startDateTime |
Data de início efetiva da janela de manutenção no formato DD-MM-AAAA HH:MM. Você poderá 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 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/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 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/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 o computador do agendamento
Para remover um computador do agendamento, obtenha todos os nomes de atribuição de configuração para o computador que foram criados para associar o computador ao agendamento atual do Azure Resource Graph, conforme listado:
maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id
Após 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 visualizar a avaliação de atualização e os logs de implantação gerados pelo Update Manager, veja logs de consulta.
- Para solucionar problemas, veja Solucionar problemas do Update Manager.