Partilhar via


O que é infraestrutura como código (IaC)?

A infraestrutura como código (IaC) usa a metodologia DevOps e o versionamento com um modelo descritivo para definir e implantar 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 toda vez que é implantado.

Diagrama de infraestrutura como código definindo o ambiente em um arquivo versionado.

O IaC é uma prática chave de DevOps e um componente da entrega contínua. Com o IaC, as equipes de 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.

Evite a configuração manual para impor consistência

O IaC evoluiu para resolver o problema da deriva ambiental em dutos de liberação. Sem o IaC, as equipes devem manter as configurações do ambiente de implantação individualmente. Com o tempo, cada ambiente se torna um "floco de neve", uma configuração única 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.

O IaC evita a configuração manual e impõe consistência representando os estados desejados do ambiente 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 desvio de configuração ou dependências ausentes. Os pipelines de liberação 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 dada operação produzir sempre o mesmo resultado, é um importante princípio de IaC. Um comando deployment 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

Forneça rapidamente ambientes de teste estáveis em grande escala

O IaC ajuda as equipes de DevOps a testar aplicativos em ambientes 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 ambientes dinamicamente com base nas definições do 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

O 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 exige, 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 códigos imperativos, como scripts de implantação, que podem se acumular ao longo do tempo.

Não há sintaxe padrão para IaC declarativo. A sintaxe para descrever o IaC geralmente depende dos requisitos da plataforma de destino. Diferentes plataformas suportam formatos de arquivo como YAML, JSON e XML.

Implantar o IaC no Azure

O Azure fornece suporte nativo para IaC por meio do modelo do Azure Resource Manager . As equipes podem definir modelos ARM declarativos usando sintaxe JSON ou Bicep para especificar a infraestrutura necessária para implantar soluções. Soluções de terceiros como o Terraform por meio de provedores específicos do Azure também estão disponíveis.