Share via


Como gerir programaticamente atualizações para servidores compatíveis com o Azure Arc

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 seus servidores habilitados para Azure Arc com o Azure Update Manager no Azure. Se você é novo no Azure Update Manager e deseja saber mais, consulte Visão geral do Update Manager. Para usar a API REST do Azure para gerenciar máquinas virtuais do Azure, consulte Como trabalhar programaticamente com máquinas virtuais do Azure.

O 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 servidores habilitados para Azure Arc 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 seu 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 azur CLI az rest .

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:

{
}

Atualizar implantação

Para disparar uma implantação de atualização para seu 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 do pedido

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

Property Description
maximumDuration Tempo máximo em minutos que a operação de atualização do SO pode demorar. Deve ser uma cadeia de caracteres de duração compatível com a ISO 8601, como PT100M.
rebootSetting Sinalize para indicar se você deve reiniciar a máquina e se a instalação da atualização do SO convidado precisa 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 na máquina que executa um sistema operacional Microsoft Windows Server suportado.
windowsParameters - classificationsToInclude Lista de categorias ou classificações de atualizações do SO a aplicar, conforme suportado e fornecido pelo SO Windows Server. Os valores aceitáveis são: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Update
windowsParameters - kbNumbersToInclude Lista de IDs KB do Windows Update que estão disponíveis para a máquina e que você precisa instalar. Se você tiver incluído qualquer 'classificationsToInclude', os KBs disponíveis na categoria serão instalados. 'kbNumbersToInclude' é uma opção para fornecer uma lista de IDs KB específicos além dos que você deseja instalar. Por exemplo: 1234
windowsParameters - kbNumbersToExclude Lista de IDs KB do Windows Update que estão disponíveis para a máquina e que não devem ser instalados. Se você tiver incluído qualquer 'classificationsToInclude', os KBs disponíveis na categoria serão instalados. 'kbNumbersToExclude' é uma opção para fornecer uma lista de IDs KB específicos que você deseja garantir que não sejam instalados. 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 a máquina está executando a distribuição Linux suportada
linuxParameters - classificationsToInclude Lista de categorias ou classificações de atualizações do SO a aplicar, conforme os & suportados fornecidos pelo gestor de pacotes do SO Linux utilizado. Os valores aceitáveis são: Critical, Security, Others. Para obter mais informações, consulte Gerenciador de pacotes Linux e suporte ao sistema operacional.
linuxParameters - packageNameMasksToInclude Lista de pacotes Linux que estão disponíveis para a máquina e precisam ser instalados. Se você tiver incluído qualquer 'classificationsToInclude', os pacotes disponíveis na categoria serão instalados. '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 Linux que estão disponíveis para a máquina e não devem ser instalados. Se você tiver incluído qualquer 'classificationsToInclude', os pacotes disponíveis na categoria serão instalados. 'packageNameMasksToExclude' é uma opção para fornecer uma lista de pacotes específicos que você deseja 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 seguinte chamada da API REST do Azure 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 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. Você deve definir a data de validade para uma data futura. Se não for fornecido, será 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. Você pode formatar agendas diárias 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. A programação semanal é formatada como recorrente: [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. Você pode formatar agendas mensais 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 (Primeira, Segunda, Terceira, Quarta, Última, Última)] [Dia da Semana: 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. Você pode obter a lista de fusos horários 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/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 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/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 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 você criou 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.