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/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 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`