Terraform

menu icon

Terraform

Bu kılavuzda, programcıların güvenli ve verimli bir şekilde altyapı oluşturmasına, değiştirmesine ve sürümlendirmesine olanak tanıyan bir araç olan Terraform hakkında bilmeniz gerekenler vurgulanır.

Terraform Nedir?

Terraform, HashiCorp tarafından oluşturulan "Kod olarak Altyapı" aracı olan açık bir kaynaktır.

Bildirime dayalı bir kodlama aracı olan Terraform, geliştiricilerin bir uygulamayı çalıştırmak için istenen "son durum" bulutunu veya şirket içi altyapıyı tanımlamak üzere HCL (HashiCorp Yapılandırma Dili) adlı üst düzey bir yapılandırma dili kullanmalarını sağlar. Ardından, bu son duruma ulaşmak için bir plan oluşturur ve altyapıyı tahsis etmek için bu planını yürütür.

Terraform basit bir söz dizimi kullanır, birden çok bulut ve şirket içi veri merkezinde altyapı tahsis edebilir ve yapılandırma değişikliklerine yanıt olarak altyapıyı güvenli ve verimli bir şekilde yeniden tahsis edebilir ve şu anda mevcut en popüler altyapı otomasyon araçlarından birisidir. Kuruluşunuz hibrit bulut ya da çok bulutlu ortam dağıtımını planlaması halinde, Terraform'u öğrenmek isteyebilir veya öğrenmeniz gerekebilir.

Neden Kod olarak Altyapı (IaC)?

Terraform'un avantajlarını daha iyi anlamak için ilk önce Kod olarak Altyapının (IaC) faydalarını anlamak yardımcı olacaktır. IaC, geliştiricilerin altyapıyı, tahsis sürecini otomatik, daha hızlı ve tekrarlanabilir hale getirebilecek şekilde kodlamasını sağlar. Sürüm kontrolü, sürekli entegrasyon ve sürekli dağıtma gibi Agile ve DevOps uygulamalarının kilit bileşenidir.

Kod olarak Altyapı aşağıda belirtilenleri sağlar:

  • Hızı artırın: Otomasyon, kaynakları dağıtmanız ve/veya bağlamanız gerektiğinde arayüzde manuel olarak gezinmekten daha hızlıdır.
  • Güvenilirliği artırın: Altyapınız büyükse, bir kaynağı hatalı bir şekilde yapılandırmak veya hizmetleri yanlış sırayla tahsis etmek daha kolay olur. IaC ile, kaynaklar her zaman bildirildiği şekilde tahsis edilir ve yapılandırılır.
  • Yapılandırma kaymasını önleyin: Yapılandırma kayması, ortamınızı tahsis eden yapılandırma artık gerçek ortamla eşleşmediğinde oluşur. (Aşağıdaki 'Değişmez altyapı' bölümüne bakın.)
  • Denemeleri, testleri ve optimizasyonu destekleyin: Kod olarak Altyapı, yeni altyapı tahsis etmeyi çok daha hızlı ve kolay hale getirdiğinden, çok fazla zaman ve kaynak yatırmadan deneysel değişiklikler yapabilir ve test edebilirsiniz ve sonuçları beğenmeniz halinde, üretim için yeni altyapıyı hızla ölçeklendirebilirsiniz.

Daha detaylı bilgi için "Kod olarak Altyapı nedir?" bölümüne bakın:

Neden Terraform?

Geliştiricilerin Terraform'u diğer Kod olarak Altyapı araçlarının yerine kullanmayı seçmesinin birkaç önemli nedeni vardır:

  • Açık kaynak: Terraform, platformda eklenti oluşturan büyük topluluklar tarafından desteklenmektedir. Hangi bulut sağlayıcıyı kullanırsanız kullanın, eklentileri, uzantıları ve profesyonel desteği bulmak kolaydır. Bu aynı zamanda, Terraform'un sürekli eklenen yeni avantajlar ve iyileştirmelerle birlikte daha hızlı evrim geçirdiği anlamına gelmektedir.
  • Farklı platformlarla çalışan: Bu, herhangi bir bulut hizmetleri sağlayıcısı ile kullanabileceğiniz anlamına gelir. Diğer çoğu IaC aracı, tek bir bulut sağlayıcısıyla çalışacak şekilde tasarlanmıştır.
  • Değişmez altyapı: Kod olarak Altyapı araçlarının çoğu, değişken altyapı oluşturmaktadır; yani, ara yazılım yükseltmesi veya yeni depolama sunucusu gibi değişiklikleri karşılamak için altyapı değişebilmektedir. Değişken altyapı ile ilgili tehlike, yapılandırma kayması olup değişiklikler biriktikçe, farklı sunucuların veya diğer altyapı öğelerinin gerçekten tahsis edilmesi orijinal yapılandırmadan daha da 'kayarak', hataların veya performans sorunlarının tanılanmasını ve düzeltilmesini zorlaştırır. Terraform, değişmez altyapı tahsis etmekte olup bunun anlamı, ortamdaki her değişiklikte geçerli yapılandırmanın değişikliği dikkate alan yeni yapılandırmayla değiştirilmesi ve altyapının yeniden tahsis edilmesidir. Daha da iyisi, önceki yapılandırmalar gerekirse veya istenirse geri alma işlemlerine olanak sağlamak için sürümler olarak saklanabilir.

Terraform modülleri

Terraform modüller, birlikte kullanılan çoklu altyapı kaynakları için küçük ve yeniden kullanılabilir Terraform yapılandırmalarıdır. Terraform modülleri, karmaşık kaynakların yeniden kullanılabilir, yapılandırılabilir yapılarla otomatikleştirilmesine izin verdiğinden dolayı yararlıdır. Çok basit bir Terraform dosyası yazma işlemi bile bir modülle sonuçlanmaktadır. Bir modül, kurulum yapılandırmasını daha hızlı ve daha kısa hale getirebilen, alt modül olarak adlandırılan diğer modülleri çağırabilir. Modüller aynı yapılandırma içinde ya da ayrı yapılandırmalarda birden çok kez çağrılabilir.

Terraform sağlayıcıları

Terraform sağlayıcılar, kaynak tiplerini uygulayan eklentilerdir. Sağlayıcılar, kullanıcı adına kimlik doğrulaması yapmak ve bir hizmete bağlanmak için gereken tüm kodu (genellikle genel bir bulut sağlayıcısından) içerir. Kullandığınız bulut platformları ve hizmetleri için sağlayıcılar bulabilir, bunları yapılandırmanıza ekleyebilir, ardından altyapı tahsis etmek için bunların kaynaklarını kullanabilirsiniz. Sağlayıcılar, Terraform topluluğu veya bireysel kuruluşlar tarafından geliştirilen ve/veya desteklenen hemen hemen her büyük bulut sağlayıcısı, SaaS çözümü ve daha fazlası için kullanılabilir. Ayrıntılı bir liste için bkz. Terraform belgeleri (bağlantı IBM dışındadır).

Terraform ve Kubernetes

Bazı durumlarda Terraform ve Kubernetes arasında ve gerçekte hangi işlevi gerçekleştirdikleriyle ilgili çelişki söz konusudur. Gerçekte birbirlerinin alternatifleri olmayıp birlikte etkin bir şekilde çalışabilmektedirler.

Kubernetes, geliştiricilerin dağıtımları bir işlem kümesindeki düğümlere zamanlamasına ve durumlarının kullanıcıların niyetleriyle eşleştiğinden emin olmak için konteynerli iş yüklerini etkin bir şekilde yönetmesine olanak sağlayan açık kaynak kodlu konteyner düzenleme sistemidir.

Öte yandan Terraform, geliştiricilerin birden fazla genel buluta ve özel buluta yayılan tüm altyapıyı otomatikleştirmesine izin veren, çok daha geniş bir erişime sahip Kod olarak Altyapı aracıdır.

Terraform, Hizmet olarak Altyapı (IaaS), Hizmet olarak Platform (PaaS) veya hatta Hizmet olarak Yazılım (SaaS seviyesindeki yetenekleri otomatikleştirip yönetebilir ve paralel olarak tüm bu sağlayıcılardaki tüm bu kaynakları oluşturabilir. Terraform'u Kubernetes'in tahsisini (özellikle, bulut platformlarındaki yönetilen Kubernetes kümeleri) otomatikleştirmek ve uygulamaların bir kümeye dağıtımını otomatikleştirmek için kullanabilirsiniz.

Terraform ve Ansible

Terraform ve Ansible, Kod olarak Altyapı araçlarıdır, ancak ikisi arasında birkaç önemli fark vardır:

  • Terraform tamamen bildirime dayalı bir araçken (yukarıya bakın), Ansible hem bildirimsel hem de yordamsal yapılandırmayı birleştirir. Yordamsal yapılandırmada, altyapıyı tercih edilen duruma ayarlamak için kullanmak istediğiniz adımları veya kesin tarzı belirlersiniz. Yordamsal yapılandırma daha çok iş demektir ancak daha fazla kontrol sağlar.
  • Terraform açık kaynaklıdır; Ansible, Red Hat tarafından geliştirilir ve satılır.

IBM ve Terraform

IBM Cloud Schematics, IBM'nin Terraform tabanlı ücretsiz bulut otomasyon aracıdır. IBM Cloud Schematics, Terraform tabanlı altyapı otomasyonunuzu tam olarak yönetmenize olanak tanır, böylece uygulamalar oluşturmak için daha fazla zaman harcayabilir ve ortam oluşturmak için daha az zaman harcayabilirsiniz.

iBM Cloud Schematics'in nasıl kullanacağı hakkında daha fazla bilgi edinin.

Terraform hakkında daha fazla bilgi için, IBMid sistemine kaydolun ve IBM Cloud hesabınızı oluşturun.