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.
Exemplele următoare prezintă cazul în care AWS a fost ales ca furnizor, dar majoritatea principiilor descrise pot fi refolosite pentru ceilalți furnizori de cloud și de asemenea în cazul în care alegem alți furnizori în general (de DNS, baze de date, monitorizare, etc.).
Tip | Descriere | Disponibilitate |
---|---|---|
Tip | Descriere | Disponibilitate |
---|---|---|
Puține resurse, fără dependențe externe. Un singur cont AWS. O singura regiune. Un singur mediu.
Da
Câteva conturi AWS și medii de lucru, module de infrastructură gata de folosire cu Terraform.
Da
Mai multe conturi de AWS, mai multe regiuni, nevoie urgentă de a reduce folosirea metodei copy-paste, module de infrastructură personalizate, utilizare ridicata a compoziției de cod. Folosind Terraform.
În lucru
foarte mare
Furnizori multiplii (AWS, GCP, Azure). Implementări multi-cloud. Folosind Terraform.
Nu
medie
Mai multe conturi de AWS și medii de lucru, module de infrastructură gata de folosire, model de compoziție folosind Terragrunt.
Nu
mare
Mai multe conturi de AWS, multiple regiuni, nevoie urgentă de a reduce folosirea metodei copy-paste, module de infrastructură personalizate, utilizare ridicata a compoziției de cod. Folosind Terragrunt.
Nu
foarte mare
Furnizori multiplii (AWS, GCP, Azure). Implementări multi-cloud. Folosind Terragrunt.
Nu
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.