Infraestrutura como código
A IaC (infraestrutura como código) é o processo de gerenciamento e provisionamento de recursos de infraestrutura de nuvem por meio de código legível por computador armazenado no controle do código-fonte. A capacidade de tratar a infraestrutura como você trata qualquer outro código-fonte é o motivo pelo qual essa prática é chamada infraestrutura como código.
A IaC é um componente fundamental de DevOps, pois permite a automação da configuração e da implantação da infraestrutura. Essa automação reduz o tempo e o esforço necessários para gerenciar e provisionar a infraestrutura e ainda garante que a infraestrutura seja configurada de modo consistente e confiável. A IaC também ajuda a garantir que a infraestrutura esteja segura e em conformidade com as políticas organizacionais.
Ferramentas nativas do Azure versus ferramentas independentes de nuvem
Um dos fatores mais importantes na escolha de uma ferramenta de IaC é o ambiente de nuvem:
Ferramentas nativas do Azure: as ferramentas de IaC, como a CLI do Azure, o Azure PowerShell e o Bicep, estão disponíveis somente no Azure. Como a mesma empresa fornece a infraestrutura de nuvem e as ferramentas de IaC, o benefício é o tempo reduzido entre a versão de recurso de nuvem e o suporte nas ferramentas.
Ferramentas independentes de nuvem: ferramentas de IaC, como o Terraform, permitem que você gerencie a infraestrutura como código em ambientes de nuvem híbrida. Dependendo da ferramenta de IaC, os recursos do Azure recém-lançados podem não ter suporte imediato.
Ferramentas de IaC imperativas versus declarativas
Existem dois tipos de ferramentas de configuração de IaC:
Ferramentas de IaC imperativas: uma ferramenta, ou linguagem, imperativa é 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 a infraestrutura. A maioria das ferramentas de IaC imperativas não é idempotente porque a configuração é executada passo a passo.
As ferramentas de IaC imperativas para gerenciar e provisionar recursos no Azure incluem:
- A CLI do Azure
- Azure PowerShell
Ferramentas de IaC declarativas: uma ferramenta, ou linguagem, declarativa permite que você especifique o resultado desejado e não como cada etapa deve ser realizada. As ferramentas de IaC mais declarativas seguem um padrão comum. Depois de criar a definição da infraestrutura, execute um comando para provisionar o que você definiu. As ferramentas de IaC declarativas são idempotentes, pois a configuração pode ser aplicada várias vezes, independentemente do estado da configuração da infraestrutura. Essa capacidade permite evitar o descompasso de configuração fazendo com que uma infraestrutura sem conformidade volte a estar em conformidade.
As ferramentas de IaC declarativas para gerenciar e provisionar recursos no Azure incluem:
- Bicep
- Terraform
Recomendações
- Adoção de uma abordagem de IaC para implantar, gerenciar, governar e dar suporte a implantações do Azure.
- Use as ferramentas de IaC nativas do Azure nos seguintes cenários:
- Você deseja usar apenas as ferramentas nativas do Azure. A organização já tem experiência com a implantação de modelos do ARM (modelos do Azure Resource Manager).
- A organização quer ter suporte imediato a todas as versões prévias e versões em GA (disponibilidade geral) dos serviços do Azure.
- Use as ferramentas não nativas para IaC nos seguintes cenários:
- Sua organização gerencia a infraestrutura em ambientes de nuvem híbrida.
- A organização não precisar ter suporte imediato a todas as versões prévias e versões de GA dos serviços do Azure.