Vagrant nedir? Ne işe yarar?

Vagrant nedir? Virtualbox, VMWare gibi sanallaştırma teknolojilerinin kullanımını kolaylaştıran bir provisioning aracıdır. Tek bir Vagrantfile dosyası ile sanal makinenin tüm ayarlarını ve kurulum detaylarını tanımlayıp kullanabiliriz. Mesela Vagrantfile üzerinden ubuntu 16 kur, şu network ayarlarını kullan, başlangıçta şu scriptleri çalıştır şeklinde bir makine tanımı yapabiliriz. Ardından tek bir vagrant up komutu ile sistem kullanıma hazır olacaktır.

Vagrant ne işe yarar?

Vagrant sanal makine ayarlarını oldukça kolaylaştırır. Git repomuzun içerisine oluşturacağımız Vagrantfile isimli tek bir dosya ile tüm takımın aynı ortamda ayrı sürüm işletim sistemi ve aynı version araçlarla çalışmasını sağlayabiliriz. Takım içi entegrasyon süreçlerini ciddi anlamda kolaylaştırır.

Sadece takım için değil tek başınıza proje geliştirirken de kullanabilirsiniz. Sanal makine yapılandırması Virtualbox gibi araçları kullanmaktan çok daha kolaydır. Hiç arayüzde muhatap olmadan gerekli tüm ayarlarınızı yapıp tek vagrant up komutuyla sanal makineyi oluşturabilir ve çalıştırabilirsiniz. Ardından vagrant ssh diyerek sanal sunucuya bağlanabilirsiniz.

Vagrant nasıl çalışır

Vagrant kendi deposundaki boxlar ile çalışır. Tüm box listesine şu adresten ulaşabilirsiniz. https://app.vagrantup.com/boxes/search . Buradaki boxları alıp değiştirip yeniden kendimiz box dosyası oluşturabiliriz. Yalnız docker ortamında yaygın olan bu işlem vagrant’ta pek uygulamaz. Çünkü image boyutları büyük olduğu için pek kullanışlı olmaz. Bunun yerine gerekli tüm provision ayarları yani gerekli yazılımların kurulması, güncellenmesi, yapılandırılması gibi ayarlar doğrudan Vagrantfile ile yapılır. Ardından vagrant up komutuyla sistem çalıştırılır.

Vagrantfile örnekleri:

Öncelikle Vagrant’ı kurduktan sonra vagrant init komutla comment satırları ile açıklanmış boş bir Vagrantfile oluşturabilir ve bunu inceleyebilirsiniz. Yine de basit bir kaç vagrant file scriptini buraya yapıştırmakta fayda görüyorum:

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/xenial64"
  config.vm.network "public_network"
  config.vm.synced_folder "d:/code", "/code"
end

Burada public network kullanarak Vagrant ile oluşturulan guest sistemin bizim ağımızda otomatik olarak ip almasını istedik. synced_folders ile ise kendi sistemimizdeki hangi klasörün sanalda nereye bağlanacağını belirledik. Eğer synced folders kullanmazsan Vagrantfile’ın da bulunduğu ana dizin sanal makinedeki /vagrant klasörüne bağlanacaktır.

Script dosyaları ile kurulum yapan ayrı bir örnek:

Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "forwarded_port", guest: 8000, host: 8000

config.vm.provision "shell", path: "install_nodejs.sh"
config.vm.provision "shell", path: "install_postgresql.sh"
config.vm.provision "shell", path: "install_python.sh"
...
end

inline olarak script yazmak içinse alttaki formatı kullanabilirsiniz:

config.vm.provision "shell", inline: <<-SHELL
   sudo apt-get update
   sudo apt-get install -y apache2
SHELL

Vagrant provider nedir?

Vagrant’ın önemli bir avantajı da arkada kullanılacak sanallaştırma sisteminin soyutlanmasıdır. Hem VmWare hem Virtualbox kullanabilirsiniz. Ama seçenekler bunla da sınırlı değil. Artık bazı cloud firmaları da Vagrant desteği vermeye başladı. Örneğin Vagrant ile arkaplanda Vultr cloud VDS’lerini kullanabilirsiniz. Detaylar için: https://www.vultr.com/docs/using-vultr-as-your-vagrant-provider

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir