Vagrant Nedir? Vagrant ile Nasıl Sanal Makine Otomasyonu Yapılır?

Vagrant Nedir? Vagrant ile Nasıl Sanal Makine Otomasyonu Yapılır?
15 Ara 2023

Vagrant Nedir?

Vagrant Virtualbox, VMWare gibi sanallaştırma teknolojilerinin kullanımını kolaylaştıran bir provisioning aracıdır.

Tek bir Vagrantfile dosyası ile bir veya birden fazla sanal makinenin tüm ayarlarını ve kurulum detayları tanımlanıp  kullanılabilir.

Vagrant kendi deposundaki Box’lar ile çalışmaktadır. Bu Box’lara https://app.vagrantup.com/boxes/search adresinden ulaşılabilir. Buradaki Box’ların ihtiyaçlar doğrultusunda modifiye edilerek özel olarak oluşturulabilmesi de mümkündür.

 

Vagrantfile Nedir?

Vagrantfile, Vagrant üzerinde yapmakistenilen konfigürasyonlar alıştırmak istenilen scriptlerin yazıldığı .file uzantılı bir dosyadır. Vagrant kurulumu tamalandıktan sonra Vagrant bu dosya üzerinden çalıştırmak istenen sanal makineleri ayağa kaldırır.

 

Vagrant Kurulumu

Vagrant’ı kullanabilmek için bir adet sanallaştırma yazılımı kullanılması gerekmektedir. Kendi kurulumunuzda www.virtualbox.org/wiki/Downloads sitesinden indirebileceğiniz Oracle VirtualBox ürününü tercih edebilirsiniz. Kullanacağınız işletim sistemi ile uyumlu olan VirtualBox sürümünü indirip kurabilmeniz mümkündür.

 

Vagrant’ı kendi web sitesi olan https://developer.hashicorp.com/vagrant/install adresi üzerinden kurulumunu yapmak istediğiniz işletim sistemini seçerek indirebilirsiniz, örneğin devamında Windows AMD64 sürümü ile devam edilmiştir.

İndirdiğiniz vagrant_2.4.0_windows_amd64.msi dosyasını çalıştırarak kuruluma geçebilirsiniz. Lisans sözleşmesini kabul edip  ardından Vagrant’ın kurulacağı konumu seçtiğinizde kurulum başlayacaktır.

Kurulum tamamlandıktan sonra bilgisayarınızda herhangi bir konumda bir dizin oluşturabilirsiniz, örnek kullanacağımız  dosya masaüstünde Vagrant adı altında olacak.

Komut istemi üzerinden cd komutu ile Vagrant kurulumunu yapacağımız dizine gidip vagrant init komutu ile kullanacağımız Vagrantfile oluşturulur.

vagrant init komutu ile oluşturduğumuz dosyanın içinde # ile kullanılan commentlerin altında temel konfigürasyon ayarlarını görebiliriz.

Buna alternatif olarak https://vagrantfile-generator.vercel.app/ sitesini kullanarak da belli konfigürasyonları belirtip Vagrantfile generate edebilirsiniz.

Kullanacağımız Vagrantfile konfigürasyonlarını not defteri üzerinden tamamlandıktan sonra dosyamızı kaydedip çıkıyoruz. Örnek olarak kullanacağımız Vagrantfile aşağıda yer almaktadır.

Komut istemi üzerinden Vagrant’ı çalıştıracağımız komuta gidip vagrant up komutu ile sanal makine kurulumumuza başlarız.

Kurulumumuz tamalandıktan sonra makinemiz VirtualBox üzerinde yer alacaktır.

Komut istemi üzerinden vagrant-ssh komutunu kullanarak herhangi bir terminale ihtiyaç duymadan da ssh bağlantısı sağlayabiliriz.

 

Vagrant ile Sanal Makine Otomasyonu

Vagrantfile kullanarak daha komplike ve otomize makineler yaratmak da mümkündür, aşağıda yer alan script üzerinden bazı  vagrant özelliklerine değineceğiz.

İlk satırda girdiğimiz config tanımlama satırı sonrasında config.vm.define ‘xxx’ do |xxx| ile tek bir makine dahilinde konfigürasyon girip makine kurulumu sağlayabiliriz, bu satırı birden fazla farklı makine için tanımlayıp tek bir Vagrantfile ile birden fazla makine kurabiliriz.

Vagrant’lar ihtiyaç doğrultusuna göre plugin de içerebilir.

Örnek olarak VirtualBox’a disk ekleme, depolama boyutu belirleme, volume group ekleme gibi özellikleri vagrant plugin install vagrant-persistent-storage komutunu kullanarak Persistent Storage plugini ile Vagrantfile içerisinde .persistent_storage tanımı ile kullanabiliriz.

Plugin’e ihtiyaç duymadan, kuracağımız makine içerisinde çalıştırmak için Bash Scriptleri de kullanabiliriz.

Bash Scriptleri;

<makine_tanımı>.vm.provision :shell, :inline => $<script_adı> ile Vagrantfile içerisinden inline bir şekilde ya da

<makine_tanımı>.vm.provision “shell”, path: “<sh_script_lokasyonu>” ile dışarıdan bir sh scriptini çağıracak şekilde çalıştırabiliriz.

Kullandığımız scriptlerde her bir makine için ayrı ayrı userlar oluşturma, /etc/hosts dosyalarını editeleme ve Persistent Storage plugini ile eklediğimiz diskleri makinelere mount etme işlemlerini gerçekleştirebiliyoruz.

Yukarıda belirtildiği gibi, Vagrant, sanallaştırma ve otomasyon süreçlerini basitleştirerek iş akışlarınızı hızlandırır. Ancak, bu süreçler karmaşık ve zaman alıcı olabilir.  Vagrant’ın kurulumu, konfigürasyonu veya otomasyon süreçleriyle ilgili daha fazla bilgi ve destek için GTech’in Sistem ve Veritabanı uzmanları ile iletişime geçebilirsiniz.

 

Yazar: Toygun Toğay, GTech Sistem ve Veritabanı Yönetimi Danışmanı