Vagrant, topluluk tarafından fazla bilinmese de aslında tıpkı Docker gibi bir sanallaştırma aracı. Ancak tabii ki Docker'dan daha eski ve aralarında temel olarak ayrışmış farklar var.
Bunlardan en bilineni, Docker sistem ve ağ servislerinin kullanımında geride kalırken Vagrantın tıpkı yeni bir sanal makineymiş gibi bu servisleri de beraberinde getirerek tamamen gerçekçi test ortamları sağlaması.
Örneğin test ederken çeşitli sistem servislerini görüntülemeniz gereken bir yazılım geliştiriyorsanız, Vagrant sizin için bulunmaz bir nimetken Docker biraz daha geri planda kalıyor.
Bu yazıda da Docker'dan daha yavaş çalışan, daha çok kaynak kullanan ancak gerekli durumlarda bir kahramana dönüşen Vagrant'ın en çok kullanılan sunucu dağıtımlarından biri olan Ubuntu 20.04 üzerine nasıl kurulacağından bahsedeceğim.
VirtualBox Ayarları
Ubuntu üzerine Vagrant kurabilmek için öncelikle kullandığınız sanallaştırma yazılımı üzerinde 'İç içe sanallaştırma' özelliğinin açılması gerekmektedir.
VirtualBox üzerinde bu özelliği aktif hale getirmek için, İlgili Sanal Makine Ayarları > Sistem > İşlemci > Nested VT-x/AMD-V ' i aktifleştir seçeneğinin işaretli olması gerekmektedir.
Eğer bu seçenek VirtualBox üzerinde silik bir şekilde gözüküyorsa aşağıdaki adımlar takip edilerek Powershell üzerinden aktifleştirilebilir.
- VirtualBox'ın kapatılması
Bu işlemden önce eğer hali hazırda VirtualBox açıksa veya arka planda çalışan bir sanal makine varsa tamamı kapatılmalıdır.
- VirtualBox'ın sistem üzerinde tanımlanması
Virtualbox'ı sistem üzerinde tanımlamak için,
SET PATH=%PATH%;"C:\Program Files\Oracle\VirtualBox"
$env:PATH = $env:PATH + ";C:\Program Files\Oracle\VirtualBox"
komutları Powershell üzerinde çalıştırılır. Bu sayede Powershell üzerinde VBoxManage aracı kullanılabilir hale gelecektir.
- İç içe sanallaştırmanın açılması
Aşağıda yer alan VBoxManage komutu sayesinde ilgili sanal makine için iç içe sanallaştırma aktif hale getirilir.
Not: vm-name yerine iç içe sanallaştırmanın açılacağı sanal makinenin görünür adı yazılır.
VBoxManage modifyvm vm-name --nested-hw-virt on
- İç içe sanallaştırmanın açıldığının kontrolü
Sanallaştırma açıldıktan sonra sanal makine ayarları aşağıdaki gibi gözükmelidir.
Buna ek olarak Ubuntu içerisinde cpu-checker paketi ile kvm'in açık olduğundan emin olunmalıdır.
# sudo apt install cpu-checker
# sudo kvm-ok
Çıktı aşağıdaki gibi görünmelidir.
VirtualBox Kurulumu
Evet, biraz garip görünse de VirtualBox üzerinde çalışan Ubuntu 20.04 üzerine tekrar VirtualBox kurulması gerekmektedir. Çünkü vagrant aslında kendi başına tamamen bir sanallaştırma yazılımı değildir, Vagrant Box'ları ayağa kaldırmak için arka tarafta VM-Ware, VirtualBox gibi sanallaştırma yazılımlarına ihtiyaç duyar.
Ubuntu 20.04 üzerinde,
sudo apt update
sudo apt install virtualbox
komutları ile VirtualBox kurulur.
Vagrant Kurulumu
Sağlayıcıyı sisteme kurduktan sonra Vagrantı kurmak için son sürüm deb paketi wget komutu yardımı ile indirilir.
wget https://releases.hashicorp.com/vagrant/2.2.19/vagrant_2.2.19_x86_64.deb
İndirilen deb paketi,
sudo apt install ./vagrant_2.2.19_x86_64.deb
komutu ile sisteme kurulur.
İlk Vagrant Box'ın Başlatılması
Öncelikle bir Vagrant Box başlatmak için boş bir dizin oluşturulur ve kaldırılmak istenen işletim sistemi vagrant init'e parametre olarak verilir.
mkdir my_first_vagrant && cd my_first_vagrant
vagrant init centos/8
Ayağa kaldırılmak istenen ilgili dağıtım veya işletim sistemi Vagrant Cloud üzerinden bulunabilir.
Örneğin bir pardus21 ayağa kaldırmak için zeki/pardus21 kullanılabilir.
Vagrant init çalıştırıldıktan sonra bulunulan dizine bir Vagrantfile dosyası oluşturmaktadır. Bu dosyanın içerisinde şu anlık sadece kaldırılması istenen işletim sistemi/dağıtım yazsa da, vagrant içerisine dosya gönderme, vagrant içerisinde komut çalıştırma vb gibi adımlar da tanımlanabilir.
Vagrant'ı Ayağa kaldırma
Vagrant up komutu ile Vagrantfile'ın bulunduğu dizinde başlatılan vagrant ayağa kaldırılır.
vagrant up
SSH ile Vagrant'a Bağlanma
Vagrant ayağa kalktıktan sonra SSH ile bağlanabilmek için,
vagrant ssh
komutu kullanılır.