Ubuntu 20.04 Üzerinde Vagrant Kurulumu
Tags: vagrant, virtualization, docker, virtualbox
Published: 2021-12-15 19:51:11

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.

 ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iqiqxe29jgpto8g6qbub.png)

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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qms5jt2thy7trkt4qwi7.png)

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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pblwpzn57l8zm4teyje7.png)

## 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](https://app.vagrantup.com/boxes/search) ü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.