Kaynak: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform
Bu örnek, hiçbir harici bağımlılığın kullanılmadığı küçük boyutlu bir altyapı için Terraform konfigürasyonları yapılandırılmasına yönelik örnek kodları içerir.
Başlamak ve geriye yönelik güncelleme yapmak için mükemmel.
Küçük kaynak modülleri için harika
Küçük ve doğrusal altyapı modülleri için iyi (ör. terraform-aws-atlantis).
Az sayıda kaynak için iyi (20-30'dan az)
Tüm kaynaklar için tek durum dosyası, kaynak sayısı artıyorsa Terraform ile çalışma sürecini yavaşlatabilir (kaynak sayısını sınırlamak için -target argümanını kullanmayı düşününebilirsiniz)
Kaynak: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/medium-terraform
Bu örnek, aşağıdakileri kullanan orta ölçekli bir altyapı için Terraform konfigürasyonlarının yapılandırılmasına örnek kodları içerir:
2 AWS hesabı
2 ayrı ortam (tamamen birbirlerinden izole prod
ve stage
). Her ortam ayrı bir AWS hesabında yaşar
Her ortam, Terraform Registry kaynaklı hazır altyapı modülünün (alb) farklı bir sürümünü kullanır.
Her ortam, dahili modüllerin aynı versiyonu kullanır.
Altyapının mantıksal olarak ayrıldığı projeler için mükemmel (ayrı AWS hesapları)
AWS hesapları arasında paylaşılan kaynakları değiştirmeye gerek olmadığında iyidir (bir ortam = bir AWS hesabı = bir durum dosyası)
Ortamlar arasındaki değişikliklerin yönetilmesine gerek olmadığında iyidir
Altyapı kaynakları ortam başına farklı olduğunda ve genelleştirilemediğinde iyidir (örneğin, bazı kaynaklar bir ortamda veya bazı bölgelerde yoktur)
Proje büyüdükçe bu ortamları birbirleriyle güncel tutmak zorlaşacaktır. Tekrarlanabilir görevler(task) için altyapı modüllerini (kullanıma hazır veya dahili) kullanmayı düşünün.
Kaynak: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform
Bu örnek, büyük boyutlu bir altyapı için Terraform konfigürasyonları yapılandırılmasına yönelik örnek kodları içerir.
2 AWS hesabı
2 bölge
2 ayrı ortam (tamamen birbirlerinden izole prod ve stage). Her ortam ayrı bir AWS hesabında bulunur ve kaynakları 2 bölge arasında dağıtır
Her ortam, Terraform Registry kaynaklı hazır altyapı modülünün (alb) farklı bir sürümünü kullanır.
Her ortam, dahili modüllerin aynı versiyonu kullanır.
Burada açıklanan gibi büyük bir projede Terragrunt kullanmanın faydaları çok görünür hale gelir. Terragrunt ile Kod Yapıları örneklerine gözatabilirsiniz.
Altyapının mantıksal olarak ayrıldığı projeler için mükemmel (ayrı AWS hesapları)
AWS hesapları arasında paylaşılan kaynakları yönetmeye gerek olmadığında iyidir (bir ortam = bir AWS hesabı = bir durum dosyası)
Ortamlar arasındaki değişikliklerin yönetilmesine gerek olmadığında iyi
Altyapı kaynakları ortam başına farklı olduğunda ve genelleştirilemediğinde iyidir (örneğin, bazı kaynaklar bir ortamda veya bazı bölgelerde yoktur)
Proje büyüdükçe bu ortamları birbirleriyle güncel tutmak zorlaşacaktır. Tekrarlanabilir görevler(task) için altyapı modüllerini (kullanıma hazır veya dahili) kullanmayı düşünebilirsiniz.