Recomendações para ativar a automatização

Aplica-se a esta recomendação de lista de verificação do Azure Well-Architected Framework Operation Excellence:

OE:10 Crie e implemente a automatização antecipadamente para operações como problemas de ciclo de vida, bootstrapping e aplicação de proteções de governação e conformidade. Não tente reajustar a automatização mais tarde. Selecione as funcionalidades de automatização fornecidas pela sua plataforma.

Este guia descreve as recomendações para conceber e implementar a carga de trabalho para ativar a automatização. Crie a carga de trabalho com automatização em mente para garantir que as tarefas de rotina, como recursos de aprovisionamento, dimensionamento e implementações, são executadas de forma rápida e fiável. A automatização simplifica as tarefas de manutenção e permite-lhe atualizar, corrigir e atualizar os seus sistemas de forma mais eficiente.

Principais estratégias de design

Estrutura da carga de trabalho

Pode estruturar a carga de trabalho para suportar a automatização desde a fase de ideação até à fase de melhoramento em curso. Em primeiro lugar, considere como pretende aplicar a automatização na sua carga de trabalho para ajudar a garantir que está a implementar as peças necessárias. Pense na sua carga de trabalho em termos dos pilares do Well-Architected Framework para ajudar a planear os tipos de automatização que irá utilizar. Pode automatizar muitas funções de segurança, fiabilidade, desempenho, operações e controlo de custos.

Crie com automatização em mente para minimizar a refatorização após a execução da carga de trabalho. Considere os requisitos da carga de trabalho ao decidir que ferramentas de automatização deve utilizar. Podem existir ferramentas de automatização fora da prateleira com as quais a sua equipa já está familiarizada. A adoção dessas ferramentas pode facilitar o caminho para automatizar a carga de trabalho, mas estar atento às suas limitações e compatibilidade com a sua plataforma na cloud. Por exemplo, algumas ferramentas de automatização podem integrar-se bem com as ferramentas da CLI do Azure, enquanto outras podem necessitar de interfaces REST. Investigue sempre as ferramentas fornecidas pela plataforma cloud para garantir que são compatíveis e fornecer a funcionalidade necessária. Exemplos de formas de planear proativamente a automatização incluem:

  • Implementação: automatize as implementações de aplicações e infraestruturas para garantir um padrão previsível. Planeie a implementação automatizada ao desenvolver padrões de implementação, preparar a sua equipa nas ferramentas que irá utilizar e implementar a infraestrutura necessária.

  • Validação: valide automaticamente os requisitos de conformidade relativamente à carga de trabalho com ferramentas de orquestração ou política. Identifique a ferramenta de validação adequada para a carga de trabalho e planeie implementar os sistemas necessários, por exemplo, servidores de orquestração.

  • Dimensionamento automático: utilize o dimensionamento automático em toda a infraestrutura para o ajudar a alcançar os seus requisitos de fiabilidade e desempenho. Deve alocar espaço de endereços IP e sub-redes na carga de trabalho com antecedência para ter em conta as operações de dimensionamento, além de planear a redundância e o crescimento natural.

Desvantagem: ao conceber a carga de trabalho para ativar a automatização, considere o grau de controlo que pretende manter em comparação com a eficiência que pode obter através da automatização. Em alguns casos, a carga de trabalho pode não ser suficientemente madura para automatizar algumas funções ou poderá precisar de um nível de flexibilidade que a automatização não fornece.

Considere também o conjunto de competências da sua equipa ao conceber a carga de trabalho. Se um elevado grau de automatização necessitar de ferramentas que a sua equipa não está equipada para suportar, poderá ter de utilizar um design menos abrangente como um passo intermédio.

Melhorias contínuas da carga de trabalho

Após a execução da carga de trabalho na cloud, é importante priorizar a melhoria contínua. Observe a carga de trabalho em ação, analise os padrões de utilização e reveja o comportamento do cliente relacionado com a carga de trabalho para identificar áreas onde pode melhorar a automatização. Procure formas de melhorar a automatização existente ou introduzir uma nova automatização para melhorar a experiência do cliente. Por exemplo, pode ter o dimensionamento automatizado ativado, mas o aumento da carga de trabalho é de curta duração. Pode integrar a automatização de dimensionamento para diminuir a utilização da CPU quando a carga descer abaixo do limiar.

As secções seguintes deste guia oferecem recomendações sobre áreas específicas de automatização que podem ajudá-lo na estrutura e implementação da carga de trabalho.

Bootstrapping

O bootstrapping refere-se às atualizações de configuração para um recurso que tem de ser feito depois de aprovisionado, mas antes de estar disponível como parte do conjunto de cargas de trabalho. O bootstrapping está frequentemente associado a máquinas virtuais (VMs), mas muitos outros recursos têm de ser configurados como parte do processo de implementação, incluindo tecnologias de plataforma como serviço (PaaS) e tecnologias de alojamento de contentores como Azure Kubernetes Service (AKS).

A plataforma da cloud pode fornecer-lhe soluções de arranque, que deve utilizar sempre que possível. Por exemplo, pode utilizar extensões de VM no Azure para fazer alterações de configuração predefinidas durante o processo de implementação e personalizar as alterações de configuração ao injetar scripts do PowerShell.

Autenticação e autorização

Tenha em conta a automatização ao conceber a sua estratégia de autenticação e autorização. É importante manter o nível mais elevado de segurança nas cargas de trabalho de produção, mas isso pode afetar a automatização. Por exemplo, a utilização da autenticação biométrica ou multifator adiciona complexidade que tem de ser contabilizada na sua estrutura de automatização. Utilize contas não humanas e seguras para autenticação automatizada, como identidades geridas, identidades de carga de trabalho ou certificados. Certifique-se de que incluiu a gestão de segredos e chaves na automatização para aumentar a segurança de autenticação.

Estruturar a variabilidade na carga de trabalho

Evite implementar desnecessariamente uma nova infraestrutura quando forem efetuadas pequenas alterações ao criar flexibilidade nos artefactos. Por exemplo, em vez de reimplementar a infraestrutura quando um sinalizador de funcionalidade é alterado, pode utilizar parâmetros definidos para atualizar componentes como configurações de aplicações. Certifique-se de que define e documenta claramente como a variabilidade é utilizada para evitar o uso excessivo e o desvio da configuração.

Criar um plano de controlo

Um plano de controlo é o sistema de back-end ou conjunto de ferramentas que utiliza para gerir a aplicação e as respetivas dependências através de uma interface unificada. Crie o seu plano de controlo como uma interface REST, CLI ou webhook para suportar a automatização através de ferramentas externas.

Exponha as operações de manutenção através do plano de controlo que lhe permite coordenar componentes de carga de trabalho, por exemplo, operações de cópia de segurança e restauro ordenados, bootstrapping, configuração, importação/exportação e criação de lotes. Tenha cuidado ao escolher o nível certo de granularidade ao decidir as operações a expor através do plano de controlo.

Monitorizar e registar

Desenvolva uma estratégia de monitorização para capturar métricas que impulsionam o tipo de automatização de que necessita. Utilize o registo estruturado e as métricas personalizadas para fornecer as informações necessárias pela automatização num formato fácil de reconhecer com ferramentas de automatização. As métricas que capturar devem ser emparelhadas com limiares definidos no sistema de monitorização que acionam alertas e ações automatizadas, como notificações ou mecanismos de recuperação automática, quando adequado. Para obter mais informações, veja Recomendações para auto-recuperação e auto-preservação.

Ciclo de vida do utilizador

Crie a sua aplicação e infraestrutura para permitir integração e inclusão automáticas de utilizadores, para clientes individuais ou multi-inquilinos. Planeie atualizações de bases de dados automatizadas através de scripts, aprovisionamento e desaprovisionamento de infraestruturas e gestão de credenciais e segredos.

Orquestração e utilização de políticas

Como parte da gestão contínua da carga de trabalho, pode automatizar Desired State Configuration (DSC) nos seus recursos para ajudar a garantir que cumprem os requisitos de conformidade e de negócio. A automatização do DSC ajuda a garantir que o desfasamento da configuração é rapidamente detetado e remediado. Pode automatizar o DSC com ferramentas de orquestração ou ferramentas de gestão de políticas. Pense nas ferramentas de orquestração, como os serviços do Azure DevOps ou o Jenkins, como mecanismos baseados em push. As ferramentas de orquestração permitem que as atualizações de configuração sejam enviadas através de um evento de fluxo de trabalho, como uma implementação manual ou automatizada. Estas atualizações são executadas como parte de uma sequência de tarefas definida no script de implementação. As ferramentas de gestão de políticas utilizam mecanismos baseados em solicitação, o que significa que um sistema é executado ao nível fundamental da carga de trabalho que consulta periodicamente a carga de trabalho para verificar o estado do DSC definido. Se o inquérito identificar um desalinhamento ou desvio de configuração, a ferramenta tomará medidas corretivas. Considere os seguintes fatores ao decidir entre a orquestração e as ferramentas de gestão de políticas:

  • As ferramentas de orquestração não têm capacidades incorporadas para consultar proativamente a carga de trabalho relativamente ao desfasamento da configuração. As ferramentas de orquestração devem ser integradas no pipeline de integração contínua e entrega contínua (CI/CD) para manter um padrão de gestão e implementação de infraestrutura como código (IaC). Uma vantagem de utilizar ferramentas de orquestração é que os recursos estão sempre totalmente configurados quando implementados.

  • As ferramentas de gestão de políticas permitem-lhe definir políticas que afetam um ou mais grupos de recursos. Estas políticas são impostas quando o recurso faz o check-in com o sistema de gestão de políticas. Uma vantagem de utilizar a gestão de políticas é que estes sistemas não são orientados por código, pelo que podem ser mais fáceis de adotar pelos operadores da sua equipa.

Ao decidir entre ferramentas de orquestração ou política, considere se as atualizações de configuração que está a planear efetuar em novos recursos têm de ser efetuadas no momento da implementação. Considere também se a definição de atualizações no código se adequa às suas práticas operacionais e ao número de tipos de recursos que planeia implementar. Se existirem muitas configurações diferentes entre tipos de recursos, as ferramentas de política poderão ser uma forma mais fácil de gerir atualizações.

Facilitação do Azure

Gestão de políticas

Azure Policy: ao utilizar Azure Policy, pode impor normas e avaliar a conformidade em escala. Azure Policy fornece uma vista agregada para avaliar o estado geral do ambiente de carga de trabalho no dashboard de conformidade. Em alternativa, pode utilizar Azure Policy para avaliar cada recurso e política a um nível granular. Também pode utilizar Azure Policy para remediar automaticamente novos recursos ou remediar recursos existentes em massa.

Desvantagem: descarregar a automatização do pipeline ci/CD para ferramentas ou serviços de plataforma, como Azure Policy, pode simplificar o pipeline, mas tem desvantagens como a carga de gestão adicional da utilização de vários sistemas. Por exemplo, as falhas de execução num serviço de plataforma não serão capturadas nos registos do pipeline e terão de ser introduzidas na sua plataforma de observabilidade de forma inteligente para que as partes adequadas sejam notificadas.

Automatização do bootstrap

Extensões de Máquinas Virtuais do Azure: Máquinas Virtuais extensões são pequenos pacotes que executam a configuração e automatização pós-implementação em VMs. Estão disponíveis várias extensões para diferentes tarefas de configuração, como executar scripts, configurar soluções antimalware e configurar soluções de registo. Instale e execute estas extensões em VMs com um modelo do Azure Resource Manager, a CLI do Azure, Azure PowerShell módulo ou o portal do Azure. Cada VM tem um agente de VM instalado que gere o ciclo de vida da extensão.

Normalmente, as extensões de VM utilizam uma extensão de script personalizado para instalar software, executar comandos e efetuar configurações numa VM ou no Azure Conjuntos de Dimensionamento de Máquinas Virtuais. Pode configurar estas extensões para serem executadas como parte de implementações iaC para que sejam executadas em novas VMs com o Agente de VM do Azure. As extensões também podem ser executadas fora de uma implementação do Azure com a CLI do Azure, o módulo do PowerShell ou o portal do Azure.

Cloud-init: O Cloud-init é uma ferramenta do setor para configurar VMs do Linux no primeiro arranque. Tal como as extensões de script personalizado do Azure, o cloud-init permite-lhe instalar pacotes e executar comandos em VMs do Linux. Pode utilizar o cloud-init para instalação de software, configuração do sistema e teste de conteúdos. O Azure inclui muitas imagens de VM ativadas para cloud init em distribuições bem conhecidas do Linux. Para obter uma lista completa, veja suporte cloud-init para VMs no Azure.

Recurso do script de implementação do Azure: Ao implementar com o Azure, poderá ter de executar código arbitrário para iniciar o arranque da gestão de contas de utilizador, pods do Kubernetes ou consultar dados de um sistema que não seja do Azure. Uma vez que nenhuma destas operações está acessível através do plano de controlo do Azure, é necessário um mecanismo separado. Para obter mais informações, consulte Microsoft.Resources deploymentScripts. Como qualquer outro recurso do Azure, o recurso de script de implementação:

  • Pode ser utilizado num modelo de Resource Manager do Azure.

  • Contém dependências de modelos Resource Manager do Azure noutros recursos.

  • Consome entrada e produz saída.

  • Utiliza uma identidade gerida atribuída pelo utilizador para autenticação.

Quando implementado, o script de implementação executa os comandos e scripts do PowerShell ou da CLI do Azure. As execuções e o registo de scripts podem ser observados no portal do Azure ou no módulo da CLI do Azure e do PowerShell. Pode personalizar as variáveis para o ambiente de execução, as opções de tempo limite e a gestão de recursos após uma falha de script.

Iniciar clusters do AKS com o GitOps: pode iniciar o arranque de um cluster do AKS recentemente aprovisionado com o GitOps e a extensão de cluster do Flux v2 ao declarar as definições de configuração nos repositórios do GitHub. Uma vez que os ficheiros de cluster do AKS são armazenados num repositório do GitHub, têm um controlo de versão e as alterações entre versões são facilmente controladas. Os controladores do Kubernetes são executados nos clusters e reconciliam continuamente o estado do cluster com o estado pretendido declarado no repositório git ao solicitar os ficheiros do repositório. Para obter mais informações, veja Arquitetura de referência da linha de base do AKS.

Gestão da configuração

Automatização do Azure State Configuration é uma ferramenta de gestão do DSC gerida pela funcionalidade de configuração de convidado Azure Policy que pode utilizar para escrever, gerir e compilar configurações do DSC do PowerShell para nós em qualquer datacenter na cloud ou no local. Também pode utilizar esta ferramenta para importar recursos do DSC e atribuir configurações a nós de destino.

Azure App Configuration é um serviço que pode utilizar para gerir centralmente as definições da aplicação e os sinalizadores de funcionalidades. Funciona com o Azure Key Vault para que possa gerir de forma segura uma grande variedade de configurações de aplicações em todo o seu ambiente.

Controlo de alterações e inventário

O controlo de alterações e o inventário com o Agente de Monitorização do Azure monitoriza o desfasamento da configuração do SO nas máquinas virtuais. Esta ação automatiza a deteção de desfasamento, os serviços de execução de inventário e os pacotes instalados nas máquinas virtuais na carga de trabalho. Os itens controlados pelo controlo de alterações e inventário incluem:

  • Software Windows e Linux instalado
  • Ficheiros Chave do Windows e Linux
  • Chaves de registo do Windows
  • Serviços Windows e daemons do Linux

Lista de verificação de Excelência Operacional

Veja o conjunto completo de recomendações.