Vagrant’a Genel Bakış — 2

Vagrant serisinin birinci ve üçüncü yazılarına ilgili linkten ulaşabilirsiniz.

Vagrantfile Oluşturmak

Vangrant Box’lar Vagrantfile kullanılarak oluşturulurlar, Ruby kullanacağız fakat Ruby bilmiyorsanız ve daha önce hiç duymadıysanız bunun bir önemi yok, gayet basit anlaşılması kolay komutları kullanacağız.

Vagratfile oluşturacağımız dizine gidip

vagrant init

komutunu çalıştırdığımızda bizim için bir dosya hazırlanacak.

Bu adımda istediğiniz editörü kullanabilirsiniz, ben vim kullanacağım.

Neredeyse tamamen yorum satırlarından oluşan bir dosya önümüzde duruyor, bu yorum satırları bize dosyamızı hazırlarken çok yardımcı olacak. Dikkat ettiyseniz yorumda olmayan satır neredeyse yok, ilk gördüğümüz satır,

Vagrant.configure("2") do |config|

bize konfigürasyon nesnesinin versiyonu belirtiyor, şuan güncel olan 2 ama ihtiyacınız var ise burayı değiştirerek bir önceki versiyonu kullanabilirsiniz,

config.vm.box = "base"

Base box, özel bir box kategorisidir, bunlar Vagrant’ın çalışması için gerekli olan minimum özellikleri içerir, yeni bir Vagrant ortamı hazırlarken bir base box kullanılır, ilk yazımızda kullandığımız ubuntu bir base box’dır.

Base box yaratma uzun bir işlemdir, VagrantCloud’da hazırlanmış olan box’ları kullanarak bu işlem adımlarını atlayabiliriz.

config.vm.box = "bento/ubuntu-18.04"

base olarak ubuntu-18.04'ü seçtik.

#config.vm_box_check_update = false

Bu satır Vagrant çalıştırıldığında box sürümünü nasıl kontrol ettiğini belirler. Varsayılan ayarı true’dur eğer bu satırı yorumdan çıkarırsak artık sürüm kontrolleri yapmayacaktır, Vagrant her başlatıldığında box’da güncelleme olup olmadığını kontrol eder, eğer yeni bir sürüm varsa uyarı mesajı verecektir.

#config.vm.network "forwarded_port", guest: 80, host: 8080

Bu ayarı aktif ettiğimizde ana makinemizin 8080 portu box’ın 80 numaralı portuna yönlendirilecektir. Burada dikkat edilmesi gereken detay herhangi bir ağdan ana makineye gelen istek box’ın 80 numaralı portuna iletilir.

#config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

Burada yalnızca ana makine box’a erişebilecek herkese açık erişimi kapatılacaktır. Burada sadece ana makineden gelen istekler box’a yönelendirilecektir.

# config.vm.network "public_network"

Dışarıdan box’a erişilmesini sağlar.

#config.vm.network "private_network", ip: "192.168.33.10"
#config.vm.network "private_network", type: dhcp

Box’ın private network’de haberleşmesini sağlar, static ip adresi atayabiliriz veya dhcp’yi kullanabiliriz.

# config.vm.synced_folder "../data", "/vagrant_data"

Ana makine ile box arasındaki dosya senkronizasyonu için kullanılır ilk argüman yani ../data ana makinenin dizini ikincisi box’ın dizinidir ve bunlar birbiri ile senkronizedir. Vagrantfile’da bu ayarı bu satırı yorumdan kaldırmadıysak bile Vagrant varsayılan olarak Vagrantfile’ın bulunduğu dizini senkronize edecektir.

# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end

provider Vagrant’ı hangi sanal makine ile kullanacağımızı belirten ayardır varsayılan olarak Virtualbox kullanıyor ama eğer Hyper-V, Vmware hatta Docker kullanmak isterseniz buradaki ayarı değiştirebilirsiz ayrıca altında bulunan ayarlar kaldıracağımız makinenin kaynakları belirlememizi sağlar.

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

provision ile vagrant ilk çalıştığında kurulacak yazılımlar, çalışacak scriptler, eklenecek dosyalar belirlenir. Ayıca ansible playbook’ları da çalıştırabiliriz.

Örneğin nginx’in box’ın ilk kurulumunda hazır olmasını istiyorum.

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

bu komutları Vagrantfile’a ekliyorum ve

vagrant up

komutu ile box’ı yaratıyorum.

Vagrant serisinin birinci ve üçüncü yazılarına ilgili linkten ulaşabilirsiniz.