Ana içeriğe geç

Terraform

Okunuşu
teraform
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/terraform

Kısaca

Terraform, kod olarak altyapı aracıdır; bulut kaynaklarını yapılandırma dosyalarında tarif edersiniz, tek komut onları buna göre oluşturur ya da günceller.

Terraform nedir?

Terraform, HashiCorp tarafından 2014'te yayımlandı. Bir bulut konsolunda tıklayıp durmak yerine ne istediğinizi, örneğin iki sanal makine, bir veritabanı ve bir yük dengeleyiciyi, HashiCorp Configuration Language (HCL) ile dosyalara yazarsınız. Terraform bu dosyaları okur ve gerçeği onlara uydurmak için bulutun API'siyle konuşur. Dosyalar Git'te durduğu için altyapı da tıpkı kod gibi incelenir, geçmişi tutulur ve geri alınabilir.

İş akışının iki temel adımı vardır. terraform plan, yapılandırmayı mevcut durumla karşılaştırır ve tam olarak neyin oluşturulacağını, değişeceğini ya da silineceğini gösterir. terraform apply ise bu planı uygular. Terraform yönettiği şeyleri bir state dosyasında hatırlar; bu dosya genellikle uzakta saklanır, böylece bir ekip altyapının tek bir görünümünü paylaşır.

Terraform, provider adı verilen eklentiler sayesinde neredeyse her platformla çalışır: AWS, Azure, Google Cloud, Kubernetes, Cloudflare, GitHub, veritabanları ve yüzlercesi için. Yeniden kullanılabilir modüller, standart bir ağ gibi yaygın kurulumları paketler; ekipler de bunları her seferinde baştan kurmaz. Yapılandırma bildirimseldir (declarative): son durumu tarif edersiniz, adımların sırasını Terraform kendisi çıkarır.

Sık yapılan bir yanlış, sunucuların içinde çalışanları Terraform'un yapılandırdığı düşüncesidir. Terraform esas olarak kaynakların kendisini oluşturur ve birbirine bağlar; makinelere paket kurmak ve dosya düzenlemek Ansible gibi yapılandırma araçlarının ya da konteyner imajlarının işidir. HashiCorp 2023'te Terraform'u kaynağı görülebilir (source-available) bir lisansa taşıdı; topluluk da son açık kaynak sürümü OpenTofu adıyla çatalladı, o da büyük ölçüde aynı şekilde çalışır.

Bir bakışta

Terraform iş akışı. Yapılandırma dosyaları istenen altyapıyı tarif eder. terraform plan onları Terraform'un hâlihazırda yönettiklerini kaydeden state dosyasıyla karşılaştırır ve değişiklikleri gösterir: eklenecek bir kaynak, değişecek bir kaynak. terraform apply ise bu değişiklikleri yapmak için bulut sağlayıcısının API'sini çağırır ve state dosyasını günceller.main.tfistenen altyapıterraform planne değişecek?terraform applybulut API'sini çağırırBulutAWS, Azure, GCP…+ aws_s3_bucket.assets~ aws_instance.webPlan: 1 to add, 1 to changeterraform.tfstateTerraform'un yönettiklerikarşılaştırırsonucu kaydeder
Son durumu siz tarif edersiniz; plan hiçbir şey olmadan önce farkı gösterir, apply da gerçeği buna uydurur ve kaydını state dosyasında tutar.

Önemli noktalar

  • Terraform bulut altyapısını HCL dosyalarında kod olarak tarif eder.
  • terraform plan değişiklikleri önizler; terraform apply onları uygular.
  • State dosyası, Terraform'un hangi gerçek kaynakları yönettiğini kaydeder.
  • Provider'lar onu AWS, Azure, Google Cloud, Kubernetes ve daha fazlasına bağlar.
  • OpenTofu, büyük ölçüde aynı şekilde çalışan açık kaynaklı bir çatallamadır.

Örnek

AWS'de bir depolama bucket'ı tanımlamakhcl
provider "aws" {
  region = "eu-central-1"
}

resource "aws_s3_bucket" "assets" {
  bucket = "example-site-assets"

  tags = {
    Environment = "production"
  }
}

# terraform plan   -> shows: 1 to add
# terraform apply  -> creates the bucket

Sık sorulan sorular

Terraform ücretsiz mi?

Terraform komut satırı aracı ücretsiz kullanılabilir; ama 2023'ten bu yana onu rakip bir ürün olarak sunmayı kısıtlayan Business Source License ile yayımlanıyor. OpenTofu ise tamamen açık kaynaklı bir çatallamadır. HashiCorp ayrıca yönetilen bir servis olan HCP Terraform'u da satar.

Terraform ile Ansible arasındaki fark nedir?

Terraform esas olarak ağlar, makineler ve veritabanları gibi altyapıyı bildirilen bir son durumdan oluşturur ve yönetir. Ansible ise esas olarak makineleri yapılandırır; SSH üzerinden yazılım kurar ve ayarları değiştirir. Birçok ekip ikisini birlikte kullanır.

Terraform state dosyası nedir?

Terraform'un yönettiği gerçek kaynakları ve ayarlarını kaydettiği dosyadır. Neyin değiştiğini çıkarmasını sağlar; ekipler onu genellikle iki kişi aynı anda değişiklik uygulamasın diye kilitlemeli bir uzak depoda tutar.

Sık karşılaştırılanlar

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar