Ana içeriğe geç

Yan yana

TerraformvsAnsible

Terraform ile Ansible arasındaki fark nedir?

Güncellendi 2 dk okuma6 fark

Kısaca

Terraform bulut altyapısını tanımlayıp oluşturur ve bir state dosyasında izler; Ansible ise mevcut makineleri yapılandırır ve SSH üzerinden yazılım dağıtır.

Terraform

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 sayfasını oku

Ansible

Ansible, 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.

Ansible sayfasını oku

Terraform ve Ansible karşılaştırması

ÖzellikTerraformAnsible
Ana işAltyapı oluşturmak (provisioning)Makineleri yapılandırmak ve yazılım dağıtmak
TarzBildirime dayalı: son durumu tarif edinGörev listeleri, çoğunlukla idempotent modüller
DilHCLYAML playbook'ları
StateBir state dosyasında izlenirYok; her çalışmada makineleri kontrol eder
Nasıl bağlanırBulut ve servis API'leriSSH ya da WinRM, agent'sız
GeliştirenHashiCorp; OpenTofu açık bir çatallanmadırRed Hat

Fark, açıklamalı

İkisi de infrastructure as code araçlarıdır, ama farklı adımlara odaklanırlar. HashiCorp'un 2014'te yayımladığı Terraform esas olarak kaynak oluşturmayla (provisioning) ilgilidir: bir VPC, bir Kubernetes kümesi ya da bir DNS kaydı gibi istediğiniz kaynakları HCL dosyalarında tarif edersiniz; terraform apply da gerçeklik kodla eşleşene kadar her sağlayıcının API'si üzerinden onları oluşturur, değiştirir ya da siler.

İlk olarak 2012'de yayımlanan ve 2015'ten beri Red Hat'in parçası olan Ansible ise esas olarak yapılandırmayla ilgilidir: YAML ile yazılan playbook'lar paket kurmak, yapılandırma dosyalarını düzenlemek, kullanıcı oluşturmak ve servisleri yeniden başlatmak gibi görevleri listeler; Ansible da bunları mevcut makinelerde SSH üzerinden çalıştırır. Sunucularda bir agent gerektirmez ve modülleri idempotent olacak şekilde tasarlanmıştır; bir playbook'u iki kez çalıştırmak aynı sonucu verir.

Terraform oluşturduklarını kaydeden bir state dosyası tutar; böylece değişikliklerin kesin bir planını hesaplayabilir ve koddan kaybolan kaynakları kaldırabilir. Ansible state izlemez; her çalışmada makineleri kontrol eder ve eksik olanı uygular. Yaygın kalıbın ikisini birden kullanmak olmasının nedeni budur: sunucuları ve bulut servislerini oluşturmak için Terraform, üzerlerinde çalışanları kurmak için Ansible.

Sık yapılan bir yanlış, araçların birbirinin yerine kullanılabileceğini düşünmektir. Ansible bazı bulut kaynaklarını oluşturabilir, Terraform da betik çalıştırabilir, ama her biri kendi güçlü alanının dışında hantaldır. Container tabanlı kurulumlarda Ansible'ın rolü küçülür, çünkü imajlar Dockerfile'larla derlenir ve Kubernetes tarafından çalıştırılır. Terraform'un 2023'teki lisans değişikliğinden beri açık kaynaklı çatallanma OpenTofu da bir seçenektir.

Hangisini kullanmalısınız?

Terraform şu durumlarda doğru seçim:

  • Sağlayıcılar arasında bulut kaynakları oluşturup yönetiyorsunuz.
  • Neyin değişeceğini tam olarak gösteren bir plan istiyorsunuz.
  • Ağları, veritabanlarını, DNS'i ve kümeleri kod olarak yönetiyorsunuz.

Ansible şu durumlarda doğru seçim:

  • Sunucuları yapılandırıyor, paket kuruyor ve uygulama dağıtıyorsunuz.
  • Şirket içindekiler dahil mevcut makineleri yönetiyorsunuz.
  • SSH üzerinden agent'sız otomasyon istiyorsunuz.

Sık sorulan sorular

Terraform ve Ansible birlikte kullanılabilir mi?

Evet, çoğu zaman da kullanılır. Terraform altyapıyı oluşturur, sonra Ansible onun oluşturduğu sunucuları yapılandırır; bazen terraform apply'dan hemen sonra tetiklenerek.

Terraform bildirime dayalı, Ansible prosedürel mi?

Kabaca evet. Terraform istenen son durumu tarif eder ve adımları kendisi bulur. Ansible playbook'ları ise görevleri sırayla listeler, ama her modül harekete geçmeden önce mevcut durumu kontrol eder.

OpenTofu nedir?

HashiCorp'un Terraform'u 2023'te kaynağı görülebilir bir lisansa taşımasından sonra oluşturulan ve Linux Foundation altında sürdürülen, Terraform'un açık kaynaklı bir çatallanmasıdır. Terraform koduyla büyük ölçüde uyumludur.

Daha fazla

Ayarlar