Share via


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.