Terraform
- Okunuşu
- teraform
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
Ö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
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 bucketSı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
- Kod Olarak AltyapıDevOps ve Bulut, s. 27Kod olarak altyapı, sunucuları, ağları ve diğer altyapıyı araçların otomatik uyguladığı, sürüm kontrolündeki dosyalarda tanımlama pratiğidir.
- Bulut BilişimDevOps ve Bulut, s. 5Bulut bilişim, sunucu, depolama ve veritabanı gibi bilişim kaynaklarının internet üzerinden, kullandığın kadar öde modeliyle talep üzerine sunulmasıdır.
- Yapılandırma YönetimiDevOps ve Bulut, s. 53Yapılandırma yönetimi, sunucuların ve yazılımın istenen durumunu kodla tanımlama ve araçlarla bunu otomatik olarak uygulayıp koruma pratiğidir.
- AWSDevOps ve Bulut, s. 2AWS (Amazon Web Services), Amazon'un bulut platformudur; sunucu, depolama, veritabanı ve çok daha fazlası için kullandıkça ödenen 200'den fazla servis sunar.
- AnsibleDevOps ve Bulut, s. 1Ansible, YAML playbook'larını ajan kurmadan SSH üzerinden çalıştırarak sunucuları yapılandıran ve uygulama dağıtan açık kaynaklı bir otomasyon aracıdır.
- GitOpsDevOps ve Bulut, s. 20GitOps, sistemin istenen durumunu Git'te tutan ve otomatik bir ajanın canlı sistemi bununla senkronize ettiği bir altyapı ve dağıtım yönetimi yöntemidir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin