Bu yazımızda Vagrant’ı nasıl ayağa kaldıracağımızı ve basit bir shell script ile ayağa kaldırdığımız makinemizi nasıl yapılandırdığımızı (provisioning) işleyeceğiz.
İlk olarak komut satırını açıp vagrant init diyoruz. Bu komut ile bulunduğumuz dizinde default bir Vagrantfile oluşturulacaktır. Default oluşturulan bu dosyanın içeriği sizi korkutmasın 🙂 Vagrant ile ilgili kullanılabilecek comment edilmiş ayar komutları bulunuyor.
Baştan bir sanal makina kurulumu yapmak yerine box’ları kullanabiliriz. Box’lar bir hızlı bir şekilde sanal makina klonlamak için kullanılan bir nevi base image şeklinde düşünebiliriz. Bu örnekte Ubuntu 12.04 LTS 32-bit box işletim sistemini kullanacağız. Eğer farklı bir işletim sistemi yüklemek istiyorsanız Atlas.Hashicorp adresinden kullanıma sunulan box’ları inceleyebilirsiniz.
Komut satırından vagrant box add hashicorp/precise32 komutunu çalıştırıyoruz. Bu komut eğer daha önceden bu box sisteminiz de yoksa bir kereliğine base box’ı download edecektir. Daha sonraki kullanımlarda var olanı kullanacaktır. Her kullanımda orjinal box’ı kullanmak yerine bu orjinal box’ın klonları kullanılacağı için orjinal box’ınız hiçbir şekilde değişikliğe uğramayacaktır. Base box’ımızı yükledikten sonra Vagrantfile dosyamızı açıp config.vm.box = “hashicorp/precise32” satırını ekliyoruz. Bu satır ile kullanacağımız box’ı belirtiyoruz.
Şimdi vagrant up komutunu çalıştırıp makinemizi ayağa kaldıralım. Ayağa kaldırdığımız bu makineye vagrant ssh komutu ile tam yetkili bir ssh bağlantısı kuralım. Download işlemini saymazsak full ssh bağlantı yapabildiğimiz bir sanal makineyi saniyeler içerisinde ayağa kaldırmış bulunduk. Dark magic 🙂
Her şey tamam ve güzel. Sanal makine içerisinde herhangi bir işlem yapmam gerektiğinde terminal tabanlı text editoru mu kullanmak zorundayım? Gelişmiş text editorleri dururken terminal ile bu iş biraz daha zahmetli ve sıkıcı. Tam bu noktada imdadımıza sycned folders yetişiyor. synced folders ile herhangi bir dosyayı guest ve host makinelerimiz arasında senkronize edebiliriz. Bunun için guest makinamızda touch /vagrant/senkFile yazıp çalıştıyoruz. Bu komut ile Vagrant, host ve guest makinamızda senkFile adında bir dosya oluşturacaktır. Bu dosya guest ve host arasında senkronize edilecektir.
Son olarak basit bir shell script kullanarak sanal makinemizde Apache web sunucusunu ayağa kaldıralım. Bunun için apache.sh adında bir dosya oluşturup aşağıdaki scripti yazıyoruz içerisine.
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi
Daha sonra Vagrantfile dosyamıza config.vm.provision :shell, path: “apache.sh” satırını ekliyoruz. Bu kod ile sanal makinemizi shell script ile provision edeceğimiz söylüyoruz ve script dosyamızın bulunduğu dizini belirtiyoruz. vagrant reload –provision
komutu ile sanal makinemizi tekrar ayağa kaldıralım. Vagrant ssh yapıp wget 127.0.0.1 komutunu çalıştırıp web sunucumuza istek yapabiliriz. Ve yaptığımız bu istek sonucunda HTTP 200 responsunun geldiğini görürüz.
EOF
Kaynakça :