O que é a infraestrutura como código (IaC)?
IaC (Infraestrutura como código) usa a metodologia e o controle de versão do DevOps 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 é implantado.
IaC é uma prática chave do DevOps e um componente de entrega contínua . Com a IaC, as equipes do DevOps podem trabalhar em conjunto 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 a configuração manual para impor consistência
A IaC evoluiu para resolver o problema de descompasso de ambiente nos pipelines de lançamento. Sem IaC, as equipes devem manter as configurações de ambiente de implantação individualmente. Com o tempo, cada ambiente se torna um "floco de neve", uma configuração exclusiva que não pode ser reproduzida automaticamente. A inconsistência entre os 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 a configuração manual e impõe a 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 runtime causados por descompasso de configuração ou dependências ausentes. Os pipelines de versão executam as descrições de ambiente e os modelos de configuração de versão para configurar ambientes de destino. Para fazer alterações, a equipe edita a origem, não o destino.
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 é obtida configurando automaticamente o destino existente ou removendo o destino existente e criando novamente um ambiente novo.
Ferramentas úteis
Entregar rapidamente ambientes de teste estáveis em grande escala
A IaC ajuda as equipes do DevOps a testar aplicativos em ambientes semelhantes à produção no início do ciclo de desenvolvimento. O Teams pode provisionar vários ambientes de teste de forma confiável sob demanda. A nuvem provisiona e desativa dinamicamente ambientes com base nas definições de 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 alcançar essa configuração. Por exemplo, o arquivo pode definir uma versão e configuração necessárias do servidor, 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 manutenção do código imperativo, como scripts de implantação, que podem se acumular ao longo do tempo.
Não há sintaxe padrão para IaC declarativa. A sintaxe para descrever IaC geralmente depende dos requisitos da plataforma de destino. Diferentes plataformas dão suporte a formatos de arquivo, como YAML, JSON e XML.
Implantar IaC no Azure
O Azure fornece suporte nativo para IaC por meio do modelo de Azure Resource Manager . O Teams pode definir modelos declarativos do ARM usando a sintaxe JSON ou Bicep para especificar a infraestrutura necessária para implantar soluções. Soluções de terceiros, como Terraform por meio de provedores específicos do Azure, também estão disponíveis.