Infraestrutura como código
Infraestrutura como código (IaC) é o processo de gerenciamento e provisionamento de recursos de infraestrutura de nuvem por meio de código legível por máquina que é armazenado no controle do código-fonte. A capacidade de tratar sua infraestrutura como faria com qualquer outro código-fonte é o motivo pelo qual essa prática é chamada de infraestrutura como código.
O IaC é um componente-chave do DevOps, pois permite a automação da configuração e implantação da infraestrutura. Essa automação reduz o tempo e o esforço necessários para gerenciar e provisionar a infraestrutura, ao mesmo tempo em que garante que a infraestrutura seja configurada de forma consistente e confiável. O IaC também ajuda a garantir que a infraestrutura seja segura e esteja em conformidade com as políticas organizacionais.
Ferramentas nativas do Azure vs. ferramentas agnósticas da nuvem
Um dos fatores mais importantes na escolha de uma ferramenta IaC é o seu ambiente de nuvem:
Ferramentas nativas do Azure: as ferramentas IaC, como a CLI do Azure, o Azure PowerShell e o Bicep, estão disponíveis apenas no Azure. Como a mesma empresa fornece infraestrutura de nuvem e as ferramentas IaC, o benefício é a redução do tempo entre o lançamento do recurso de nuvem e o suporte nas ferramentas.
Ferramentas agnósticas à nuvem: ferramentas de IaC, como o Terraform, permitem gerenciar a infraestrutura como código em ambientes de nuvem mista. Dependendo da ferramenta IaC, os recursos do Azure recém-lançados podem não ter suporte imediato.
Ferramentas IaC imperativas vs. declarativas
Existem dois tipos de ferramentas de configuração IaC:
Ferramentas IaC imperativas: Uma ferramenta imperativa, ou linguagem, é aquela em que o código especifica explicitamente o que deve ser feito e como. O código que você escreve executa ações em uma ordem específica, uma etapa de cada vez, para configurar sua infraestrutura. A maioria das ferramentas IaC imperativas não são idempotentes porque a configuração é realizada passo a passo.
As ferramentas IaC imperativas para gerenciar e provisionar recursos no Azure incluem:
- A CLI do Azure
- Azure PowerShell
Ferramentas de IAC declarativas: uma ferramenta declarativa, ou linguagem, permite especificar o resultado desejado em vez de como você deseja que cada etapa seja concluída. A maioria das ferramentas declarativas de IaC adere a um padrão comum. Depois de criar a definição da sua infraestrutura, execute um comando para provisionar o que definiu. As ferramentas declarativas de IaC são idempotentes porque a configuração pode ser aplicada várias vezes, independentemente do estado da configuração da infraestrutura. Essa capacidade ajuda a evitar desvios de configuração, trazendo a infraestrutura não compatível de volta à conformidade.
As ferramentas declarativas de IaC para gerenciar e provisionar recursos no Azure incluem:
- Bicep
- Terraform
Recomendações
- Adote uma abordagem IaC para implantar, gerenciar, governar e dar suporte a implantações do Azure.
- Use ferramentas nativas do Azure para IaC nos seguintes cenários:
- Você deseja usar apenas ferramentas nativas do Azure. Sua organização tem experiência anterior com a implantação de modelos do Azure Resource Manager (modelos ARM).
- A sua organização pretende suporte imediato para todas as versões de pré-visualização e disponibilidade geral (GA) dos serviços do Azure.
- Use ferramentas não nativas para IaC nos seguintes cenários:
- Sua organização gerencia a infraestrutura em ambientes de nuvem mista.
- Sua organização não precisa de suporte imediato para todas as versões de visualização e GA dos serviços do Azure.