Usamos o Terraform extensivamente para criar e gerenciar infraestrutura em nuvem. Em nossa experi¨ºncia com configura??es maiores, nas quais o c¨®digo ¨¦ dividido em m¨®dulos que s?o inclu¨ªdos de maneiras diferentes, os times acabam se deparando com uma parede de repeti??o inevit¨¢vel causada por falta de flexibilidade. Lidamos com esse problema usando , um wrapper fino para Terraform que implementa as pr¨¢ticas defendidas por Yevgeniy Brikman em . Consideramos o Terragrunt ¨²til por encorajar m¨®dulos versionados e reutiliza??o para diferentes ambientes. Os ganchos de ciclo de vida s?o outro recurso ¨²til que fornece flexibilidade adicional. Em termos de empacotamento, o Terragrunt tem as mesmas limita??es do Terraform: n?o h¨¢ uma maneira adequada de definir pacotes ou depend¨ºncias entre pacotes. Como solu??o alternativa, voc¨º pode usar m¨®dulos e especificar uma vers?o associada a uma tag Git.
We widely use Terraform as code to configure a cloud infrastructure. is a thin wrapper for Terraform that implements the practices advocated by the book. We've found Terragrunt helpful as it encourages versioned modules and reusability for different environments with some handy features, including recursive code execution in subdirectories. We'd like to see the tool evolve to support CD practices natively, where all code can be packaged, versioned and reused across different environments on CD pipelines. Our team achieves this today with workarounds.

