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.