Vagrant ile Yerel Geliştirme Ortamı Oluşturma ve Yönetme

müfettiş

Moderatör
Katılım
20 Ocak 2024
Mesajlar
325
Tepkime puanı
1
Puanları
18

vagrant_.png

Vagrant ile Yerel Geliştirme Ortamı Oluşturma ve Yönetme​


Giriş: "Benim Bilgisayarımda Çalışıyordu" Sorununa VM Çözümü​

Docker harikadır ama her şey konteyner değildir. Bazen çekirdek (Kernel) seviyesinde ayar yapmanız, farklı bir işletim sistemini (BSD, Windows) test etmeniz veya Docker'ın kendisini kuracağınız bir kümeyi simüle etmeniz gerekir.

Eskiden bunun için VirtualBox'ı açar, ISO indirir, kurar ve ayar yapardık. Bu manuel ve paylaşılması zor bir süreçti. Vagrant, sanal makineleri (VM) kod ile yönetmenizi sağlayan (Infrastructure as Code) ve geliştirme ortamlarını standartlaştıran bir araçtır.

Vagrantfile: Reçete Dosyası​

Vagrant'ın kalbi Vagrantfiledır. Bu dosyayı proje klasörüne koyarsınız ve takım arkadaşınıza gönderirsiniz. O kişi vagrant up dediğinde, sizinle tıpatıp aynı sanal makineye sahip olur.

Örnek bir dosya:

Ruby:
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64" # Ubuntu 20.04 imajı
  config.vm.network "private_network", ip: "192.168.56.10"
 
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
  end
end

Nasıl Çalışır?​

  1. Box (Kutu): Vagrant, ISO dosyalarıyla uğraşmaz. "Box" adı verilen hazır, hafif imajları indirir (Vagrant Cloud).
  2. Provider: Arka planda VirtualBox, VMware veya Hyper-V kullanabilir. Vagrant sadece bir kumandadır.
  3. Provisioning: VM açıldıktan sonra içine ne kurulacağını (Apache, Docker, Python) belirleyebilirsiniz (Shell script, Ansible, Chef).

Temel Komutlar​

  • vagrant up: Dosyayı okur, VM'i oluşturur ve başlatır.
  • vagrant ssh: VM'in içine şifresiz (SSH anahtarı ile) girmenizi sağlar.
  • vagrant halt: Makineyi kapatır.
  • vagrant destroy: Makineyi tamamen siler. Denemeniz bittiğinde diskinizde yer kaplamaz.

Kullanım Senaryoları​

  • Kubernetes Cluster Kurulumu: Kendi bilgisayarınızda 3 tane Ubuntu sunucu ayağa kaldırıp, birbirine ağ ile bağlayıp K8s kurmayı öğrenmek için idealdir.
  • Ansible Playbook Testi: Production sunucularına Ansible çalıştırmadan önce, Vagrant ile oluşturduğunuz geçici VM'lerde kodunuzu test edebilirsiniz.
  • Cross-Platform Geliştirme: Mac kullanıyorsunuz ama uygulamanızın Linux'ta nasıl davrandığını kernel seviyesinde görmeniz gerekiyor.

Sonuç​

Vagrant, Docker'ın atası değil, tamamlayıcısıdır. Konteynerler uygulama izolasyonu, Vagrant ise makine izolasyonu sağlar. Geliştiricilerin "kirlet-at" (disposable) mantığıyla saniyeler içinde temiz test ortamları oluşturması için vazgeçilmez bir araçtır.
 
Geri
Üst