Terraform yapılandırması ve betiği oluşturma

Tamamlandı

Bu ünitede Terraform yapılandırmasına ve betiğine bakacağız.

Neden Terraform?

Bir altyapı yöneticisi olarak, Azure altyapısını sağlamak ve yönetmek için bir araç gerekir. Ayrıca azure kaynaklarınızın topolojisini açıklayan yapılandırma dosyalarında kod olarak altyapı kullanmak istiyorsunuz.

HashiCorp Terraform, bulut sağlayıcıları arasında altyapı dağıtma konusunda harikadır. Geliştiricilere her altyapı tanımını yönetmek için tutarlı araçlar sağlar.

Altyapı yönetimini otomatikleştirme

Şablon tabanlı Terraform yapılandırma dosyalarını kullanarak Azure kaynaklarını yinelenebilir ve öngörülebilir bir şekilde tanımlayabilir, sağlayabilir ve yapılandırabilirsiniz. Bu otomasyon çeşitli avantajlar sunar:

  • Altyapıyı dağıtıp yönetirken insan hatası olasılığını azaltır.
  • Aynı geliştirme, test ve üretim ortamları oluşturmak için aynı şablonu birden çok kez dağıtır.
  • Ortamları isteğe bağlı olarak oluşturarak geliştirme ve test ortamlarının maliyetini azaltır.

Altyapı değişikliklerini uygulanmadan önce anlama

Kaynak topolojisi giderek daha karmaşık hale geldikçe altyapı değişikliklerinin anlamını ve etkisini anlamak zor olabilir.

Terraform kullanarak altyapı değişikliklerini uygulamadan önce doğrulayabilir ve önizleyebilirsiniz. Ekip üyeleri, önerilen değişiklikleri ve bunların geliştirme sürecinin başlarındaki etkisini anlayarak daha etkili bir şekilde işbirliği yapabilir.

Terraform yapılandırma dosyaları

Yapılandırma dosyaları bir yürütme planı oluşturur ve planın istenen duruma ulaşmak için neler yapacağı. Terraform daha sonra açıklanan altyapıyı oluşturabilir. Yapılandırma değiştikçe Terraform, değişenleri belirleyebilir ve artımlı yürütme planları oluşturabilir.

Terraform yapılandırma dosyaları, altyapının açıklamasına izin vermek için tasarlanmış YAML'ye benzer şekilde kendi yapılandırma dillerini kullanır.

HashiCorp Yapılandırma Dili (HCL) söz dizimini kullanarak yapılandırma dosyaları oluşturursunuz. HCL bildirim temellidir ve bu hedefe ulaşma adımları yerine hedeflenen bir hedefi açıklar. HCL söz dizimi, Azure gibi bulut sağlayıcısını ve bulut altyapınızı oluşturan öğeleri belirtmenize olanak tanır.

Yapılandırma dosyaları.tf uzantısına sahip düz metin dosyaları olarak depolanır. Bunlar:

  • main.tf: (gerekli) Tüm altyapıyı doğrudan veya modüllere yapılan çağrılar aracılığıyla dağıtarak ana yapıyı tanımlar
  • outputs.tf: Terraform modülünün her dönüş değerini tanımlar
  • variables.tf: gerekli olup olmadıklarına bakılmaksızın main.tf değişkenlerini tanımlar

Terraform yapılandırma yapısının ekran görüntüsü.

Modül

Terraform kaynaklarını daha büyük bir yapılandırma birimi oluşturan bir modülde gruplandırabilirsiniz. Bu modüller, tek bir dizinde depolanan yapılandırma dosyaları kümeleridir. Basit bir yapılandırma, bir veya daha fazla .tf dosyası içeren tek bir dizinden oluşur.

Modüller birçok avantaj sunar. Örneğin, modüller:

  • Projenizi düzenlemeye yardımcı olun.
  • Karmaşıklığı kapsülleme.
  • Ortak görevleri yeniden kullanmanıza olanak sağlar.
  • Tutarlılık sağlayın ve iyi uygulamaları izlediğinize emin olun.

main.tf dosyası

main.tf dosyanız, modülünüz için ana yapılandırma ayrıntıları kümesini içerir. Bu dosya genellikle Terraform planı olarak adlandırılır. Terraform planınız ihtiyacınız olan altyapı kaynaklarını belirtir. Bu dosyayı istediğiniz şekilde adlandırabilirsiniz, ancak genellikle main.tf olarak adlandırılır.

Terraform iş akışı

Terraform, otomasyon için temel "başlatma, planlama ve uygulama" iş akışını önerir. Bu iş akışı, yeni ve güncelleştirilmiş Git çekme isteklerinde tüm Terraform CI/CD eylemlerini çalıştırır.

Temel eylemlerin Init, Plan ve Apply görüntülendiği Terraform iş akışının diyagramı.

Bu iş akışının temel eylemleri şunlardır:

  • Init: Terraform yapılandırma dosyalarıyla çalışma dizini başlatma
  • Plan: Kaynakları geçerli yapılandırmayla eşleşecek şekilde değiştirmek için bir plan oluşturma
  • Uygula: Plan tarafından açıklanan değişiklikleri uygulama

Devlet

Durum , Terraform'un hangi Azure kaynaklarını ekleyeceğini, güncelleştireceği veya sileceklerini bilmesini sağlar.

Terraform, plan oluşturmak ve altyapınızda değişiklikler yapmak için durumu kullanır. Terraform, herhangi bir işlemden önce durumu gerçek altyapıyla güncelleştirmek için bir yenileme yapar.

Durum varsayılan olarak terraform.tfstate adlı yerel bir metin dosyasında depolanır. Terraform, modüllerinizde tanımladığınız iş akışı eylemlerini kullanarak bu dosyayı yönetir.

Ayrıca, ekip ortamında daha iyi çalışan bir yaklaşım olan durumu uzaktan da depolayabilirsiniz. Durumu uzaktan yönetme hakkında daha fazla bilgi için bu modülün sonundaki Özet birimine bakın.

Sonraki adımlar

Bir sonraki ünitede, uygulamalarınızı sağlamak ve dağıtmak için Terraform'un GitHub Actions veya Azure Pipelines ile kullanılmasını ele alacağız.