Como gerenciar atualizações programaticamente em servidores habilitados para Azure Arc

Este artigo explica o processo de uso da API REST do Azure para disparar uma avaliação e uma implantação de atualização em seus servidores habilitados para Azure Arc com o Gerenciador de Atualizações do Azure no Azure. Se você não estiver familiarizado com o Gerenciador de Atualizações do Azure e quiser saber mais, consulte Visão geral do Gerenciador de Atualizações. Para usar a API REST do Azure para gerenciar máquinas virtuais do Azure, confira Como trabalhar programaticamente com máquinas virtuais do Azure.

O Gerenciador de Atualizações no Azure permite que você use a API REST do Azure para acesso de forma programática. 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 servidores habilitados para Azure Arc 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 no servidor habilitado para Azure Arc, especifique a seguinte solicitação POST:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview`
{
}

Para especificar a solicitação POST, você pode usar o comando az rest da CLI do Azure.

az rest --method post --url https://management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview --body @body.json

O formato do corpo da solicitação para a versão 2020-08-15 é o seguinte:

{
}

Implantação de atualizações

Para disparar uma implantação de atualização no servidor habilitado para Azure Arc, especifique a seguinte solicitação POST:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview`

Corpo da solicitação

A tabela a seguir descreve os elementos do corpo da solicitação:

Propriedade Descrição
maximumDuration Tempo máximo em minutos que a operação de atualização do sistema operacional pode levar. Ela deve ser uma cadeia de caracteres de duração em conformidade com a ISO 8601, como PT100M.
rebootSetting Sinalizador para indicar se você deve reinicializar o computador e se a instalação da atualização do SO convidado precisa disso para ser concluída. Os valores aceitáveis são: IfRequired, NeverReboot, AlwaysReboot.
windowsParameters Opções de parâmetro para atualização do SO convidado no computador que executa um sistema operacional do Microsoft Windows Server com suporte.
windowsParameters - classificationsToInclude Lista de categorias ou classificações de atualizações do SO a serem aplicadas, conforme oferecido suporte e fornecido pelo SO do Windows Server. Os valores aceitáveis são: Critical, Security, UpdateRollup, FeaturePack, ServicePack, Definition, Tools, Update
windowsParameters - kbNumbersToInclude Lista de IDs de KB do Windows Update que estão disponíveis para o computador e que você precisa instalar. Se você tiver incluído qualquer 'classificationsToInclude', os KBs disponíveis na categoria são instalados. O 'kbNumbersToInclude' é uma opção para fornecer uma lista de IDs de KB específicas, além das que você deseja instalar. Por exemplo: 1234
windowsParameters - kbNumbersToExclude Lista de IDs de KB do Windows Update que estão disponíveis para o computador e que não devem ser instaladas. Se você tiver incluído qualquer 'classificationsToInclude', os KBs disponíveis na categoria serão instalados. O 'kbNumbersToExclude' é uma opção para fornecer uma lista de IDs de KB específicas que você quer garantir que não sejam instaladas. Por exemplo: 5678
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 quando o computador está executando a distribuição Linux com suporte
linuxParameters - classificationsToInclude Lista de categorias ou classificações de atualizações do sistema operacional a serem aplicadas, conforme suporte e fornecido pelo gerenciador de pacotes do sistema operacional Linux usado. Os valores aceitáveis são: Critical, Security, Others. Para obter mais informações, consulte o Gerenciador de pacotes do Linux e suporte ao SO.
linuxParameters - packageNameMasksToInclude Lista de pacotes do Linux que estão disponíveis para o computador e precisam ser instalados. Se você tiver incluído qualquer 'classificationsToInclude', os pacotes disponíveis na categoria serão instalados. O 'packageNameMasksToInclude' é uma opção para fornecer uma lista de pacotes, além dos que você deseja instalar. Por exemplo: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude Lista de pacotes do Linux que estão disponíveis para o computador e não devem ser instalados. Se você tiver incluído qualquer 'classificationsToInclude', os pacotes disponíveis na categoria serão instalados. O 'packageNameMasksToExclude' é uma opção para fornecer uma lista de pacotes específicos que você quer garantir que não sejam instalados. Por exemplo: mysql, libc=1.0.1.1, kernel*

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/subscriptionI/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview

{
        "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 será criada no fuso horário fornecido para o horário de verão de acordo com esse fuso horário. Você deve definir a data de validade como 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. Você pode formatar agendas diárias como recurEvery: [Frequência como inteiro]['Dia(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. O agendamento semanal é formatado como recurEvery: [Frequência como inteiro]['Semanas'] [Lista opcional separada por vírgulas dos dias da semana de segunda a domingo]. Exemplos de agenda semanal são recurEvery: 3Weeks, recurEvery: Week Saturday, Sunday. Você pode formatar agendamentos mensais como [Frequência como inteiro]['Mês(s)'] [Lista separada por vírgulas de dias do mês] ou [Frequência como inteiro]['Mês(s)'] [Semana do Mês (Primeira, 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ê 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. Você pode obter a lista de fusos horários 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 você criou 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 exibir os logs de avaliação e implantação de atualização gerados pelo Gerenciador de Atualizações, consulte logs de consulta.
  • Para solucionar problemas, consulte Solucionar problemas do Gerenciador de Atualizações.