O que é a IaC (infraestrutura como código)?.
A infraestrutura como código (IaC) usa a metodologia de DevOps e o controle de versão com um modelo descritivo para definir e implantar a infraestrutura, como redes, máquinas virtuais, balanceadores de carga e topologias de conexão. Assim como o mesmo código-fonte sempre gera o mesmo binário, um modelo IaC gera o mesmo ambiente sempre que ele é implantado.
A IaC é uma prática-chave de DevOps e um componente de entrega contínua. Com a IaC, as equipes de DevOps podem trabalhar com um conjunto unificado de práticas e ferramentas para fornecer aplicativos e sua infraestrutura de suporte de forma rápida e confiável em escala.
Evitar configuração manual para impor consistência
A IaC evoluiu para resolver o problema de descompasso de ambiente nos pipelines de lançamento. Sem a IaC, as equipes precisam manter as configurações dos ambientes de implantação de forma individual. Ao longo do tempo, cada ambiente torna-se um "floco de neve", ou seja, uma configuração exclusiva que não pode ser reproduzida automaticamente. A inconsistência entre ambientes pode causar problemas de implantação. A administração e a manutenção da infraestrutura envolvem processos manuais propensos a erros e difíceis de rastrear.
A IaC evita configuração manual e impõe consistência representando os estados de ambiente desejados por meio de código bem documentado em formatos como JSON. As implantações de infraestrutura com IaC são repetíveis e evitam problemas de tempo de execução causados por descompasso de configuração ou dependências ausentes. Os pipelines de lançamento executam as descrições do ambiente e os modelos de configuração de versão para configurar os ambientes de destino. Para fazer alterações, a equipe edita a origem, não o destino.
A idempotência, a capacidade de uma determinada operação produzir sempre o mesmo resultado, é um importante princípio da IaC. Um comando de implantação sempre define o ambiente de destino na mesma configuração, independentemente do estado inicial do ambiente. A idempotência é alcançada configurando automaticamente o destino existente ou descartando o destino existente e recriando um novo ambiente.
Ferramentas úteis
Fornecer ambientes de teste estáveis rapidamente em escala
A IaC ajuda as equipes de DevOps a testar aplicativos em ambientes semelhantes aos de produção no início do ciclo de desenvolvimento. As equipes podem provisionar vários ambientes de teste de forma confiável sob demanda. A nuvem provisiona e destrói dinamicamente ambientes com base em definições da IaC. O próprio código de infraestrutura pode ser validado e testado para evitar problemas comuns de implantação.
Usar arquivos de definição declarativa
A IaC deve usar arquivos de definição declarativa, se possível. Um arquivo de definição descreve os componentes e a configuração que um ambiente requer, mas não necessariamente como obter essa configuração. Por exemplo, o arquivo pode definir uma versão e configuração de servidor necessárias, mas não especificar o processo de instalação e configuração do servidor. Essa abstração permite maior flexibilidade para usar técnicas otimizadas fornecidas pelo provedor de infraestrutura. As definições declarativas também ajudam a reduzir a dívida técnica de manter o código imperativo, como scripts de implantação, que pode se acumular ao longo do tempo.
Não há uma sintaxe padrão para a IaC declarativa. A sintaxe para descrever a IaC geralmente depende dos requisitos da plataforma de destino. Diferentes plataformas suportam formatos de arquivo como YAML, JSON e XML.
Implantar a IaC no Azure
O Azure fornece suporte nativo para a IaC por meio do modelo do Gerenciador de Recursos do Azure. As equipes podem definir modelos de ARM ou Bicep declarativos que especificam a infraestrutura necessária para implantar soluções.
Plataformas de terceiros como Terraform, Ansible, Chef e Pulumi também oferecem suporte à IaC para gerenciar a infraestrutura automatizada.