Infraestrutura grande com o Terraform

Fonte: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform

Este exemplo contém código como um exemplo de estruturação de configurações do Terraform para uma infraestrutura de médio porte, que utiliza:

  • 2 contas na AWS

  • 2 regiões (ap-southeast-2 e us-west-1, por exemplo)

  • 2 ambientes separados (prod e stage que não compartilham nada entre eles). Cada ambiente está em uma conta separada na AWS.

  • Cada ambiente utiliza uma versão diferente do módulo de infraestrutura pronto para uso (alb) originado do Terraform Registry

  • Cada ambiente utiliza a mesma versão de módulos/rede de um módulo interno, pois é originado de um diretório local.

Em um grande projeto como o descrito aqui, os benefócios do uso do Terragrunt se tornam muito visíveis. Veja Estruturas de código de exemplos com o Terragrunt.

  • Perfeito para projetos em que a infraestrutura é separada logicamente (contas AWS separadas)

  • Bom para quando não há necessidade de modificar recursos compartilhados entre contas da AWS (um ambiente = uma conta da AWS = um arquivo de estado)

  • Bom para quando não há necessidade na orquestração de mudanças entre os ambientes

  • Bom para quando os recursos de infraestrutura são diferentes por ambiente de propósito e não podem ser generalizados (por exemplo, alguns recursos estão ausentes em um ambiente ou em algumas regiões)

À medida que o projeto cresce, será mais difícil manter esses ambientes atualizados entre sí. Considere o uso de módulos de infraestrutura (já prontos ou internos) para tarefas repetíveis.

Last updated