müfettiş
Moderatör
- Katılım
- 20 Ocak 2024
- Mesajlar
- 325
- Tepkime puanı
- 1
- Puanları
- 18
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?
- Box (Kutu): Vagrant, ISO dosyalarıyla uğraşmaz. "Box" adı verilen hazır, hafif imajları indirir (Vagrant Cloud).
- Provider: Arka planda VirtualBox, VMware veya Hyper-V kullanabilir. Vagrant sadece bir kumandadır.
- 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.