Compartilhar via


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:

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

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 Sinalizar para indicar se você deve reiniciar o computador, indica se o Gerenciador de Atualizações do Azure (AUM) deve reiniciar o computador como parte da tarefa de atualização. 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 ''classificationsToInclude''', os KBs disponíveis na categoria serão instalados. O ''kbNumbersToInclude'' é uma opção para fornecer uma lista de IDs de KB específicas, além das que você quer 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 ''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 publicada.
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 ''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ê quer 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 ''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 o comando az rest da CLI do Azure.

az rest --method post --url https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/Test/providers/Microsoft.HybridCompute/machines/WIN-8/installPatches?api-version=2020-08-15-preview @body.json

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

{
        "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. Os exemplos de agendamento diário são recurEvery: Day, recurEvery: 3Days. Os formatos de agendamento semanal são especificados como recurEvery: [Frequência como número inteiro]['Semana(s)'] [Lista de dias da semana, opcional, separada por vírgulas, de segunda a domingo]. Os 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]. Os 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 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
az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope InGuestPatch \
   --location eastus \
   --maintenance-window-duration "02:00" \
   --maintenance-window-recur-every "20days" \
   --maintenance-window-start-date-time "2022-12-30 07:00" \
   --maintenance-window-time-zone "Pacific Standard Time" \
   --install-patches-linux-parameters package-name-masks-to-exclude="ppt" package-name-masks-to-include="apt" classifications-to-include="Other" \
   --install-patches-windows-parameters kb-numbers-to-exclude="KB123456" kb-numbers-to-include="KB123456" classifications-to-include="FeaturePack" \
   --reboot-setting "IfRequired" \
   --extension-properties InGuestPatchMode="User"

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`
az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

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:

az maintenance configuration delete \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

Próximas etapas