Terraform per infrastrutture di grandi dimensioni

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

Questo esempio contiene codice per strutturare configurazioni Terraform per infrastrutture di grandi dimensioni che usano:

  • 2 account AWS

  • 2 regioni

  • 2 ambienti separati (prod e stage che non hanno niente in condivisione). Ogni ambiente vive in un account AWS separato e si distribuisce tra 2 regioni

  • Ogni ambiente usa una versione differente del moduleo di infrastruttura off-the-shelf infrastructure module (alb) con sorgenteTerraform Registry

  • Ogni ambiente usa la stessa versione del modulo interno modules/network dato che la sorgente di questo è una directory locale.

In un progetto grande come quello descritto i benefici di usare Terragrunt diventano molto evidenti. Vedi Code Structures examples with Terragrunt.

  • Perfetto per progetti dove l'infrastruttura é separata logicamente (account AWS separati)

  • Adatto dove non c'é necessità di modificare risorse condivise tra account AWS ( un ambiente = un account AWS = un file di stato)

  • Adatto dove non c'é necessità di orchestrare cambiamenti tra ambienti.

  • Adatto dove le risorse di infrastruttura sono intenzionalmente diverse per ambiente e non possono essere generalizzate. (esempio, alcune risorse sono assenti in un ambiente o in alcune regioni)

Quando il progetto crescerà, sarà più difficile tenere questi ambienti aggiornati uno con l'altro. Considera l'uso dei moduli infrastruttura (dallo scaffale o interni) per attività che si ripetono.

Last updated