Sursă: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform
Acest exemplu conține un cod ca exemplu de structurare a configuraților Terraform pentru o infrastructură de dimensiuni mari care folosește:
2 conturi AWS
2 regiuni
2 medii de lucru separate (prod
și stage
care nu au procese comune). Fiecare mediu de lucru există într-un cont AWS separat și conține resurse în două regiuni
Fiecare mediu de lucru folosește o altă versiune a modulelor de infrastructură gata de folosire (alb
) provenite din Terraform Registry
Fiecare mediu de lucru folosește aceeași versiune a unui modul intern modules/network
provenind din aceeași sursă locală (local directory)
Într-un proiect de dimensiuni mari ca cel descris aici, beneficiile utilizării Terragrunt devin foarte vizibile. Vezi Exemple de structuri de cod - Terragrunt.
Perfect pentru proiecte în care infrastructura este separată logic (conturi AWS separate)
Potrivit când nu este nevoie de modificarea resurselor partajate între conturile AWS (un mediu de lucru = un cont AWS = un fișier de stare)
Potrivit când nu este necesară orchestrarea schimbărilor între mediile de lucru
Potrivit când resursele care formează infrastructura sunt diferite in funcție de mediul de lucru cu un anumit scop și nu poate fi generalizată (ex.: anumite resurse nu există într-un mediu de lucru sau într-o anumită regiune)
O dată cu expansiunea proiectului, o să fie din ce în ce mai dificil de păstrat aceste medii de lucru la curent cu fiecare. Considerați folosirea modulelor de infrastructură (gata de folosire sau interne) pentru sarcini repetitive.
Sursă: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform
Acest exemplu conține un cod ca exemplu de structurare a configuraților Terraform pentru o infrastructură de dimensiuni mici, unde nu există dependențe externe.
Perfect pentru a începe și pentru a edita pe parcurs
Perfect pentru module cu resurse puține
Bun pentru module de infrastructură mici si lineare (ex: terraform-aws-atlantis)
Bun pentru un număr redus de resurse (mai puține de 20-30)
Un singur fișier de stare pentru toate resursele poate face procesul de lucru cu Terraform să încetinească dacă numărul de resurse crește (considerați folosirea unui argument ca-target
pentru a limita numărul de resurse).
Sursă: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/medium-terraform
Acest exemplu conține un cod ca exemplu de structurare a configuraților Terraform pentru o infrastructură de dimensiuni medii care folosește:
2 conturi AWS
2 medii de lucru separate (prod
și stage
care nu au procese comune). Fiecare mediu de lucru există într-un cont AWS separat
Fiecare mediu de lucru folosește o altă versiune a modulelor de infrastructură gata de folosire (alb
) provenite din Terraform Registry
Fiecare mediu de lucru folosește aceeași versiune a unui modul intern modules/network
provenind din aceeași sursă locală (local directory)
Perfect pentru proiecte în care infrastructura este separată logic (conturi AWS separate)
Potrivit când nu este nevoie de modificarea resurselor partajate între conturile AWS (un mediu de lucru = un cont AWS = un fișier de stare)
Potrivit când nu este necesară orchestrarea schimbărilor între mediile de lucru
Potrivit când resursele care formează infrastructura sunt diferite in funcție de mediul de lucru cu un anumit scop și nu poate fi generalizată (ex.: anumite resurse nu există într-un mediu de lucru sau într-o anumită regiune)
O dată cu expansiunea proiectului, o să fie din ce în ce mai dificil de păstrat aceste medii de lucru la curent cu fiecare. Considerați folosirea modulelor de infrastructură (gata de folosire sau interne) pentru sarcini repetitive.