Infrastructure de grande taille avec Terraform

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

Cet exemple contient du code comme exemple de structuration des configurations Terraform pour une infrastructure de grande taille qui utilise :

  • 2 comptes AWS

  • 2 régions

  • 2 environnements séparés (prod et stage qui ne partagent rien). Chaque environnement réside dans un compte AWS distinct et répartit les ressources entre 2 régions

  • Chaque environnement utilise une version différente du module d'infrastructure standard (alb) provenant de Terraform Registry

  • Chaque environnement utilise la même version d'un module interne modules/network puisqu'il provient d'un répertoire local.

Dans un grand projet comme décrit ici, les avantages de l'utilisation de Terragrunt deviennent très visibles. Voir Code Structures examples with Terragrunt.

  • Parfait pour les projets où l'infrastructure est logiquement séparée (comptes AWS séparés)

  • Bon lorsqu'il n'est pas nécessaire de modifier les ressources partagées entre les comptes AWS (un environnement = un compte AWS = un fichier d'état)

  • Bon quand il n'y a pas besoin d'orchestration des changements entre les environnements

  • Bon lorsque les ressources d'infrastructure sont différentes par environnement à dessein et ne peuvent pas être généralisées (par exemple, certaines ressources sont absentes dans un environnement ou dans certaines régions)

Au fur et à mesure que le projet grandit, il sera plus difficile de maintenir ces environnements à jour les uns avec les autres. Il faudrait envisagez d'utiliser des modules d'infrastructure (prêts à l'emploi ou internes) pour les tâches répétables.

Last updated