Partilhar via


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.