13 de abril de 20263 min de leitura

Automatizando a Configuração de Licenciamento de instâncias SQL Server com Azure Arc e Azure Policy

Banner - Automatizando a Configuração de Licenciamento de instâncias SQL Server com Azure Arc e Azure Policy

O Azure Arc permite que times de engenharia estendam o plano de controle do Azure para o ambiente on-premises, multicloud ou borda. Um dos casos de uso mais críticos para operações de FinOps e governança nessas instâncias é a gestão do tipo de licenciamento dos seus bancos de dados SQL Server.

Configurar corretamente a propriedade LicenseType não é apenas uma questão de conformidade contratual com a Microsoft, mas um requisito técnico para desbloquear recursos nativos do Azure em recursos híbridos, como o Azure Update Manager, Machine Configuration, Best Practices Assessment e suporte remoto. Adicionalmente, instâncias configuradas como PAYG permitem a flexibilidade de faturamento sob demanda em cenários onde o Software Assurance não está disponível.

Visão de instâncias SQL Server

O desafio da escala e a solução via Azure Policy

Configurar manualmente o licenciamento através do portal do Azure para cada SQL Server é inviável em ambientes de médio e grande porte. A automação, seja via PowerShell ou, de forma mais elegante, através do Azure Policy, torna-se o padrão para manter a eficiência operacional.

A estratégia de usar Azure Policy para configurar LicenseType centraliza a governança, evitando desvios de configuração (configuration drift) e garantindo que novas instâncias (Greenfield) ou instâncias existentes (Brownfield) estejam sempre alinhadas à política corporativa.

Implementação na Prática

O processo de automação via Azure Policy envolve dois pilares: a definição/atribuição da política e a execução de tarefas de remediation. Abaixo, detalhamos como estruturar essa automação utilizando PowerShell para preparar seu ambiente:

  1. Criação da definição e atribuição: Utilize os scripts infra-as-code fornecidos pela Microsoft para criar a policy no nível de Management Group ou Subscription.
  2. Remediação: Após a atribuição, a policy identificará os recursos desconformes e você poderá disparar a tarefa de correção para atualizar o LicenseType automaticamente.

Pontos de atenção para o time de Engenharia:

  • Managed Identity: A policy utiliza uma system-assigned managed identity que requer permissões específicas (Reader, Resource Policy Contributor e Azure Extension for SQL Server Deployment) para operar com sucesso.
  • Consentimento (PAYG): Ao optar por PAYG, a política é obrigada a incluir o parâmetro ConsentToRecurringPAYG. A automação já trata isso, garantindo que o compliance não falhe por falta de aceite no termo de cobrança.
  • Cenários de Orquestração: Em ambientes Brownfield, analise cuidadosamente o parâmetro LicenseTypesToOverwrite. Ele permite definir exatamente se você quer forçar um padrão global, corrigir apenas instâncias não especificadas ou migrar tipos específicos de licenciamento sem impactar instâncias que já estão em conformidade.

Visibilidade e Monitoramento

Para times de TI, monitorar o status é tão importante quanto automatizar. Utilize uma query KQL em seus dashboards para identificar quais instâncias possuem extensões conectadas e qual o status atual de licenciamento:

resources
| where type == "microsoft.hybridcompute/machines"
| where properties.detectedProperties.mssqldiscovered == "true"
| extend machineIdHasSQLServerDiscovered = id
| project name, machineIdHasSQLServerDiscovered, resourceGroup, subscriptionId
| join kind= leftouter (
    resources
    | where type == "microsoft.hybridcompute/machines/extensions"    | where properties.type in ("WindowsAgent.SqlServer","LinuxAgent.SqlServer")
    | extend machineIdHasSQLServerExtensionInstalled = iff(id contains "/extensions/WindowsAgent.SqlServer" or id contains "/extensions/LinuxAgent.SqlServer", substring(id, 0, indexof(id, "/extensions/")), "")
    | project License_Type = properties.settings.LicenseType,
    machineIdHasSQLServerExtensionInstalled)on $left.machineIdHasSQLServerDiscovered == $right.machineIdHasSQLServerExtensionInstalled
| where isnotempty(machineIdHasSQLServerExtensionInstalled)
| project-away machineIdHasSQLServerDiscovered, machineIdHasSQLServerExtensionInstalled

O uso de Azure Policy em conjunto com Azure Arc não é apenas uma ferramenta de compliance contínuo, mas um mecanismo vital para evitar erros operacionais e assegurar visibilidade total sobre o custo e o licenciamento do seu parque SQL Server híbrido.


Artigo originalmente publicado em Azure Updates - Latest from Azure Charts.

Gostou? Compartilhe:
Precisa de ajuda?Fale com nossos especialistas 👋
Avatar Walcew - Headset