Recomendações para habilitar a automação
Aplica-se a esta recomendação de lista de verificação do Azure Well-Architected Framework Operation Excellence:
OE:10 | Projete e implemente a automação antecipadamente para operações como preocupações com o ciclo de vida, inicialização e aplicação de guardrails de governança e conformidade. Não tente adaptar a automação mais tarde. Escolha os recursos de automação que sua plataforma oferece. |
---|
Este guia descreve as recomendações para projetar e implementar sua carga de trabalho para habilitar a automação. Projete sua carga de trabalho com a automação em mente para garantir que tarefas de rotina, como provisionamento de recursos, dimensionamento e implantações, sejam executadas de forma rápida e confiável. A automação simplifica as tarefas de manutenção e permite que você atualize, corrija e atualize seus sistemas de forma mais eficiente.
Principais estratégias de design
Projetar componentes de carga de trabalho para dar suporte à automação
Você pode projetar sua carga de trabalho para dar suporte à automação desde a fase de ideação até a fase de melhoria contínua. Primeiro, considere como você deseja aplicar a automação em sua carga de trabalho para ajudar a garantir que você esteja colocando as peças necessárias no lugar. Pense na sua carga de trabalho em termos dos pilares do Well-Architected Framework para ajudar a planejar os tipos de automação que você usará. Você pode automatizar muitas funções de segurança, confiabilidade, desempenho, operações e controle de custos.
Projete com a automação em mente para minimizar a refatoração após a execução da carga de trabalho. Considere seus requisitos de carga de trabalho ao decidir quais ferramentas de automação usar. Pode haver ferramentas de automação prontas para uso com as quais sua equipe já esteja familiarizada. A adoção dessas ferramentas pode facilitar o caminho para automatizar sua carga de trabalho, mas esteja ciente de suas limitações e compatibilidade com sua plataforma de nuvem. Por exemplo, algumas ferramentas de automação podem se integrar bem às ferramentas da CLI do Azure, enquanto outras podem exigir interfaces REST. Sempre investigue as ferramentas que sua plataforma de nuvem fornece para garantir que elas sejam compatíveis e forneçam a funcionalidade necessária. Exemplos de maneiras de planejar a automação de forma proativa incluem:
Implantação: automatize suas implantações de aplicativos e infraestrutura para garantir um padrão previsível. Planeje a implantação automatizada desenvolvendo padrões de implantação, treinando sua equipe sobre as ferramentas que você usará e implementando a infraestrutura necessária.
Validação: valide automaticamente os requisitos de conformidade em relação à sua carga de trabalho usando ferramentas de orquestração ou políticas. Identifique a ferramenta de validação apropriada para sua carga de trabalho e planeje a implementação dos sistemas necessários, por exemplo, servidores de orquestração.
Dimensionamento automático: use o dimensionamento automático em toda a sua infraestrutura para ajudá-lo a atingir seus requisitos de confiabilidade e desempenho. Você deve alocar espaço de endereço IP e sub-redes em sua carga de trabalho com antecedência para levar em conta as operações de escala, além de planejar redundância e crescimento natural.
Compensação: ao projetar sua carga de trabalho para permitir a automação, considere o grau de controle que você deseja manter versus a eficiência que você pode obter com a automação. Em alguns casos, sua carga de trabalho pode não estar madura o suficiente para automatizar algumas funções ou você pode precisar de um nível de flexibilidade que a automação não oferece.
Considere também o conjunto de habilidades de sua equipe ao projetar sua carga de trabalho. Se um alto grau de automação requer ferramentas que sua equipe não está equipada para suportar, talvez seja necessário usar um design menos abrangente como uma etapa intermediária.
Revisite o projeto de automação durante o ciclo de vida
Depois que sua carga de trabalho estiver sendo executada na nuvem, é importante priorizar a melhoria contínua. Observe sua carga de trabalho em ação, analise padrões de uso e analise o comportamento do cliente relacionado à sua carga de trabalho para identificar áreas onde você pode melhorar a automação. Procure maneiras de aprimorar a automação existente ou introduzir nova automação para melhorar a experiência do cliente. Por exemplo, você pode ter o dimensionamento automatizado habilitado, mas o aumento da carga de trabalho é de curta duração. Você pode integrar a automação de scale-in para diminuir o uso da CPU quando a carga cair abaixo do limite.
As seções a seguir deste guia oferecem recomendações sobre áreas específicas de automação que podem ajudá-lo no projeto e na implementação da carga de trabalho.
Automatize a inicialização
Bootstrapping refere-se às atualizações de configuração para um recurso que devem ser feitas depois que ele é provisionado, mas antes de estar disponível como parte do pool de carga de trabalho. O bootstrapping é frequentemente associado a máquinas virtuais (VMs), mas muitos outros recursos devem ser configurados como parte do processo de implantação, incluindo tecnologias de plataforma como serviço (PaaS) e tecnologias de hospedagem de contêiner, como o Serviço Kubernetes do Azure (AKS).
Sua plataforma de nuvem pode fornecer soluções de inicialização para você, que você deve usar sempre que possível. Por exemplo, você pode usar extensões de VM no Azure para fazer alterações de configuração predefinidas durante o processo de implantação e personalizar suas alterações de configuração injetando scripts do PowerShell.
Incorpore a automação ao gerenciamento de acesso
Leve a automação em consideração ao projetar sua estratégia de autenticação e autorização. É importante manter o mais alto nível de segurança nas cargas de trabalho de produção, mas isso pode afetar a automação. Por exemplo, o uso de autenticação biométrica ou multifator adiciona complexidade que deve ser levada em conta em seu projeto de automação. Use contas não humanas e seguras para autenticação automatizada, como identidades gerenciadas, identidades de carga de trabalho ou certificados. Certifique-se de ter incluído o gerenciamento de segredos e chaves em sua automação para aumentar a segurança da autenticação.
Projete a variabilidade em sua carga de trabalho
Evite implantar desnecessariamente uma nova infraestrutura quando pequenas alterações forem feitas, criando flexibilidade em seus artefatos. Por exemplo, em vez de reimplantar sua infraestrutura quando um sinalizador de recurso é alterado, você pode usar parâmetros definidos para atualizar componentes, como configurações de aplicativos. Certifique-se de definir e documentar claramente como a variabilidade é usada para evitar o uso excessivo e desvios de configuração.
Construir um plano de controle
Um plano de controle é o sistema back-end ou conjunto de ferramentas que você usa para gerenciar o aplicativo e suas dependências por meio de uma interface unificada. Crie seu plano de controle como uma interface REST, CLI ou webhook para suportar a automação por ferramentas externas.
Exponha as operações de manutenção através do plano de controle que permitem coordenar os componentes da carga de trabalho, por exemplo, backup e restauração ordenados, inicialização, configuração, importação/exportação e operações em lote. Tenha cuidado para escolher o nível certo de granularidade ao decidir as operações a serem expostas através do plano de controle.
Adote uma abordagem orientada por dados para desenvolver automação
Desenvolva uma estratégia de monitoramento para capturar métricas que impulsionem o tipo de automação que você precisa. Use o registro estruturado e métricas personalizadas para fornecer as informações exigidas pela automação em um formato fácil de reconhecer com ferramentas de automação. As métricas capturadas devem ser emparelhadas com limites definidos no sistema de monitoramento que disparam alertas e ações automatizadas, como notificações ou mecanismos de autorrecuperação, quando apropriado. Para obter mais informações, consulte Recomendações para autorrecuperação e autopreservação.
Automatize eventos do ciclo de vida do usuário
Projete seu aplicativo e sua infraestrutura para permitir a integração e a desintegração automatizadas de usuários, para indivíduos ou clientes multilocatário. Planeje atualizações automatizadas de banco de dados por meio de scripts, provisionamento e desprovisionamento de infraestrutura e gerenciamento de credenciais e segredos.
Automatize a configuração do estado desejado
Como parte do gerenciamento contínuo da carga de trabalho, você pode automatizar a Configuração de Estado Desejado (DSC) em seus recursos para ajudar a garantir que eles atendam aos requisitos de conformidade e de negócios. A automação DSC ajuda a garantir que o desvio de configuração seja detetado e corrigido rapidamente. Você pode automatizar o DSC usando ferramentas de orquestração ou ferramentas de gerenciamento de políticas. Pense em ferramentas de orquestração, como serviços de DevOps do Azure ou Jenkins, como mecanismos baseados em push. As ferramentas de orquestração permitem que as atualizações de configuração sejam enviadas por meio de um evento de fluxo de trabalho, como uma implantação manual ou automatizada. Essas atualizações são executadas como parte de uma sequência de tarefas definida no script de implantação. As ferramentas de gerenciamento de políticas usam mecanismos baseados em pull, o que significa que um sistema é executado no nível básico da sua carga de trabalho, que periodicamente sonda a carga de trabalho para verificar seu estado em relação ao DSC definido. Se a sondagem identificar um desalinhamento ou desvio de configuração, a ferramenta tomará medidas corretivas. Considere os seguintes fatores ao decidir entre orquestração e ferramentas de gerenciamento de políticas:
As ferramentas de orquestração não têm recursos internos para sondar proativamente sua carga de trabalho em busca de desvios de configuração. As ferramentas de orquestração devem ser integradas ao seu pipeline de integração contínua e entrega contínua (CI/CD) para manter um padrão de implantação e gerenciamento de infraestrutura como código (IaC). Uma vantagem de usar ferramentas de orquestração é que os recursos são sempre totalmente configurados quando implantados.
As ferramentas de gerenciamento de políticas permitem definir políticas que afetam um ou mais grupos de recursos. Essas políticas são aplicadas quando o recurso faz check-in com o sistema de gerenciamento de políticas. Uma vantagem de usar o gerenciamento de políticas é que esses sistemas não são orientados por código, portanto, podem ser mais fáceis de adotar pelos operadores da sua equipe.
Ao decidir entre orquestração ou ferramentas de política, considere se as atualizações de configuração que você planeja fazer em novos recursos devem ser feitas no momento da implantação. Considere também se a definição de atualizações no código se ajusta às suas práticas operacionais e quantos tipos de recursos você planeja implantar. Se houver muitas configurações diferentes entre os tipos de recursos, as ferramentas de política podem ser uma maneira mais fácil de gerenciar atualizações.
Facilitação do Azure
Gestão de políticas
Política do Azure: usando a Política do Azure, você pode impor padrões e avaliar a conformidade em escala. A Política do Azure fornece uma exibição agregada para avaliar o estado geral do ambiente de carga de trabalho no painel de conformidade. Ou você pode usar a Política do Azure para avaliar cada recurso e política em um nível granular. Você também pode usar a Política do Azure para corrigir novos recursos automaticamente ou corrigir recursos existentes em massa.
Compensação: descarregar a automação do seu pipeline de CI/CD para ferramentas ou serviços de plataforma, como a Política do Azure, pode simplificar seu pipeline, mas tem desvantagens, como a carga de gerenciamento adicional do uso de vários sistemas. Por exemplo, falhas de execução em um serviço de plataforma não serão detetadas em seus logs de pipeline e terão que alimentar sua plataforma de observabilidade de forma inteligente para que as partes apropriadas sejam notificadas.
Automação de bootstrap
Extensões de Máquinas Virtuais do Azure: as extensões de Máquinas Virtuais são pequenos pacotes que executam configuração e automação pós-implantação em VMs. Várias extensões estão disponíveis para diferentes tarefas de configuração, como executar scripts, configurar soluções antimalware e configurar soluções de registro. Instale e execute essas extensões em VMs usando um modelo do Azure Resource Manager, a CLI do Azure, o módulo do Azure PowerShell ou o portal do Azure. Cada VM tem um agente de VM instalado que gerencia o ciclo de vida da extensão.
Normalmente, as extensões de VM usam uma extensão de script personalizada para instalar software, executar comandos e executar configurações em uma VM ou Conjuntos de Escala de Máquina Virtual do Azure. Você pode configurar essas extensões para serem executadas como parte de implantações do IaC para que sejam executadas em novas VMs usando o Agente de VM do Azure. As extensões também podem ser executadas fora de uma implantação do Azure usando a CLI do Azure, o módulo PowerShell ou o portal do Azure.
Cloud-init: Cloud-init é uma ferramenta do setor para configurar VMs Linux na primeira inicialização. Assim como as extensões de script personalizadas do Azure, o cloud-init permite instalar pacotes e executar comandos em VMs Linux. Você pode usar o cloud-init para instalação de software, configuração do sistema e preparo de conteúdo. O Azure inclui muitas imagens de VM habilitadas para inicialização na nuvem em distribuições Linux conhecidas. Para obter uma lista completa, consulte Suporte de inicialização na nuvem para VMs no Azure.
Recurso de script de implantação do Azure: quando você implanta usando o Azure, talvez seja necessário executar código arbitrário para inicializar o gerenciamento de contas de usuário, pods do Kubernetes ou consultar dados de um sistema que não seja do Azure. Como nenhuma dessas operações é acessível por meio do plano de controle do Azure, um mecanismo separado é necessário. Para obter mais informações, consulte Microsoft.Resources deploymentScripts. Como qualquer outro recurso do Azure, o recurso de script de implantação:
Pode ser usado em um modelo do Azure Resource Manager.
Contém dependências de modelo do Azure Resource Manager em outros recursos.
Consome entrada e produz saída.
Usa uma identidade gerenciada atribuída pelo usuário para autenticação.
Quando implantado, o script de implantação executa comandos e scripts do PowerShell ou da CLI do Azure. As execuções de script e o registro em log podem ser observados no portal do Azure ou com o módulo CLI e PowerShell do Azure. Você pode personalizar as variáveis para o ambiente de execução, opções de tempo limite e gerenciamento de recursos após uma falha de script.
Clusters AKS de bootstrap com GitOps: Você pode inicializar um cluster AKS recém-provisionado usando o GitOps e a extensão de cluster Flux v2 declarando suas definições de configuração nos repositórios do GitHub. Como os arquivos de cluster AKS são armazenados em um repositório GitHub, eles são versionados e as alterações entre versões são facilmente rastreadas. Os controladores Kubernetes são executados nos clusters e reconciliam continuamente o estado do cluster com o estado desejado declarado no repositório Git extraindo os arquivos do repositório. Para obter mais informações, consulte Arquitetura de referência de linha de base do AKS.
Gestão de configuração
A Configuração do Estado de Automação do Azure é uma ferramenta de gerenciamento de DSC gerenciada pelo recurso de configuração de convidado da Política do Azure que você pode usar para escrever, gerenciar e compilar configurações de DSC do PowerShell para nós em qualquer nuvem ou datacenter local. Você também pode usar essa ferramenta para importar recursos DSC e atribuir configurações aos nós de destino.
A Configuração de Aplicativo do Azure é um serviço que você pode usar para gerenciar centralmente as configurações do aplicativo e os sinalizadores de recursos. Ele funciona com o Azure Key Vault para que você possa gerenciar com segurança uma ampla variedade de configurações de aplicativos em seu ambiente.
Controlo de alterações e inventário
O controle de alterações e o inventário usando o Agente de Monitoramento do Azure rastreiam o desvio de configuração do sistema operacional em VMs do Azure e VMs habilitadas para Arc. Isso automatiza a deteção de desvios, os serviços de execução de inventário e os pacotes instalados nas máquinas virtuais em sua carga de trabalho. Os itens que são rastreados pelo controle de alterações e inventário incluem:
- Software Windows e Linux instalado
- Principais arquivos Windows e Linux
- Chaves de registo do Windows
- Serviços do Windows e daemons Linux
Ligações relacionadas
- Arquitetura de referência de linha de base AKS
- Configuração do Aplicativo do Azure
- Configuração do Estado de Automação do Azure
- Azure Policy
- Suporte de inicialização na nuvem para VMs no Azure
- Configurações do GitOps Flux v2 com o AKS e o Kubernetes habilitado para Azure Arc
- Microsoft.Resources deploymentScripts
- Recomendações para auto-cura e auto-preservação
Lista de verificação de Excelência Operacional
Consulte o conjunto completo de recomendações.