Terraform yapılandırması ve betiği oluşturma
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
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.
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.