Terraform vs Pulumi: Qual Ferramenta de IaC para CI?
O Terraform usa HCL declarativo com um enorme ecossistema de providers; o Pulumi permite escrever infraestrutura em linguagens de propósito geral.
O Terraform define infraestrutura em HCL e é a ferramenta de IaC mais amplamente adotada. O Pulumi permite definir a mesma infraestrutura em TypeScript, Python, Go ou C#, usando construções familiares da linguagem.
| Terraform | Pulumi | |
|---|---|---|
| Linguagem | HCL (declarativo) | TypeScript, Python, Go, C# |
| Ecossistema de providers | O maior | Grande (incl. bridge do TF) |
| Backend de estado | Muitos backends | Serviço Pulumi ou autogerenciado |
| Testes | Ferramentas de plan/policy | Testes unitários nativos da linguagem |
| Perfil de time | Padrão de ops/plataforma | Devs de app que preferem código |
Em CI
Ambos se encaixam em um pipeline plan-então-apply com gate em revisão. O HCL declarativo do Terraform e seu vasto ecossistema de providers o tornam o padrão amplamente compreendido, com padrões de CI maduros e ferramentas de policy. O Pulumi permite que os times reutilizem linguagens reais, loops e testes unitários, o que pode ser mais natural para desenvolvedores de aplicações. O Pulumi também consegue consumir providers do Terraform, reduzindo a diferença de ecossistema.
Escolhendo para pipelines
Quer a ferramenta declarativa padrão da indústria, com o maior ecossistema e o maior pool de contratação: Terraform. Quer expressar a infraestrutura na linguagem de programação do seu time com testes nativos: Pulumi. Faça o gate do apply na revisão e proteja o estado em ambos.
O veredito
IaC declarativa padrão com o maior ecossistema: Terraform. Prefere linguagens reais e testes nativos: Pulumi. Ambos funcionam bem em um fluxo de CI plan/apply com estado protegido.