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.

Diagram of infrastructure as code defining the environment in a versioned file.

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.