1. Vagrant Nedir?

• Vagrant, bir geliştirici aracı yazılımıdır.

•GNU/Linux dağıtımlarının bazılarında, Mac ve Windows işletim sistemlerinde kolay yapılandırılabilir, tekrar üretilebilir/elde edilebilir, taşınabilir bir geliştirme ortamı oluşturmamıza yardımcı olup bunun için sanallaştırma (Virtualbox,VMWare vs..) teknolojisinden faydalanan bir sanal makina yöneticisidir.

1.1 Ne İşe Yarar?

•Vagrant sanal makine ayarlarını oldukça kolaylaştırır.

•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ı versiyon 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

1.2 Vagrant Kurulumu

•Vagrant kurulumu oldukça basit. Vagrant için herhangi bir sanal makina provider’ının sisteminizde yüklü olması gerekiyor. •Aşağıdaki adreslerden uygulamaları indirebilirsiniz.  Ücretsiz olduğundan dolayı VirtualBox kullanabilirsiniz.

DownloadVagrant
DownloadOracle VM VirtualBox

•Yükleme işlemi bittikten sonra Vagrant otomatik olarak kendisini bilgisayarınızın çevre değişkenlerine ekleyecektir. Bunun sayesinden herhangi bir değişiklik yapmadan komut satırınızda vagrat komutlarını çalıştırabilirsiniz.

1.3 Vagrant nasıl çalışır? (1/2)

•Vagrant kendi deposundaki boxlar ile çalışır.

•Tüm box listesine şu adresten ulaşabiliriz: https://app.vagrantup.com/boxes/search .

•Buradaki boxları alıp değiştirip yeniden kendimiz box dosyası oluşturabiliriz.

1.3 Vagrant nasıl çalışır? (2/2)

•Vagrant ile çalışmaya başlamak için, öncelikle bir temel kutuya ihtiyacımız var.

atlas.hashicorp.com

vagrantbox.es

•Vagrant içerisine bir temel kutu eklemek için iki ayrı seçenek mevcut.

•Vagrant bulutunda tanımlı temel kutulardan birini eklemek.

•Üçüncü kişiler tarafından hazırlanmış kutuları eklemek

•Kutu eklemek için baz alacağımız taslak komut şudur;

1.4 Ne zaman işe yarar ?

•Bir proje için Vagrant ortamı hazırladınız ve bu ortamı takımdaki diğer arkadaşlarınızın da kullanması gerekiyor.

•Siz içerisinde bulunduğunuz ortamı bir kutu haline getirerek, bir sunucuya yüklüyorsunuz.

•Kutunun sunucudaki bu adresini takımınızla paylaşıyorsunuz ve herkes kutuyu o adresten eklemiş oluyor.

1.5 Özetle Çalışma Mantığı

•5 tane de yazılımcı olsun. Gerçek ortamda yayın yapan bir web sunucu olsun. Bu sunucu ile aynı şekilde yapılandırılmış bir sanal sistem (BaseBox) oluşturdunuz diyelim.

•5 yazılımcının da bu oluşturduğumuz BaseBox’ ı kullanmasını sağladığınızda hepsi sunucuyla aynı özellikleri taşıyan birer lokal sunucuya sahip olacaklar.

•Bundan sonra 5 yazılımcının her biri projelerini ister not defteri ile yazsınlar, ister ide ile yazsınlar problem değil.

•Bu sayede lokalde çalıştırdıkları her kod parçacığı ya da kod bloğu sunucuda da sorunsuz bir şekilde çalışacaktır.

2. Terminoloji

•Vagrant ekosisteminde  bazı terminoloji ve konseptlere değinmek gerekiyor.

•Öncelikle host machine kendi fiziksel makinamız, guest machine ise makinamıza kurduğumuz sanal makinayi ifade eder.

2.1 Boxes

•Boxes, Vagrant’ın temel yapı taşıdır.

•Binlerce kullanıcı tarafından oluşturulmuş özel kutulardır.

•Bu kutuları scriptiniz içerisine yazarsanız Vagrant bunu sizin için indirir ve script içerisinde belirttiğiniz özellikler üzerinden çalışmasını sağlar. •Bu paket formatı içerisinde basit işletim sistemi yüklemesi olabileceği gibi birden fazla uygulama yüklemesi de olabilir.

•Vagrant ortamlarımız bu box dediğimiz kutularda durur.

•Vagrant ile ayağa kaldırdığımız her bir ortam bir box’a denk gelir.

2.2 Base Boxes

•Vagrant hızlı bir şekilde sanal makina oluşturmak için base box dediğimiz base image kullanır.

•Aslında box’ların özel bir biçimidir.

•Sanal bir makina oluşturmak için minimum gereksinimlerin tanımlandığı box’lardır.

•Örneğin, hızlı bir şekilde Ubuntu Server 14.04 LTS işletim sistemine sahip olan bir sanal bir makina ayağa kaldırmak için ubuntu/trusty64 base box’ını kullanırız. Box list adresinden mevcut box’ları inceleyebilirisiniz.

2.3 Providers

•Sanallaştırma adına asıl işi yapan kısım burası.

•Vagrant herhangi bir sanallaştırma işlevi sağlamıyor. Bunun yerine sanallaştırma hizmeti sunan teknolojilerden yararlanır.

•Vagrant ekosisteminde sanallaştırma işlevi sunan teknolojiler Provider olarak isimlendirilir. VirtualBoxVMWareHyper-V bunlardan birkaçı. Vagrant için default provider VirtualBox’tır.

2.4 Provisioners

•Provisioners ( yapılandırma araçları ) yüklenmiş olan sanal makinada  tanımladığımız taskları  chef.puppet.ansibe.saltstack.fabricçalıştıran araçlardır.

•Sanal sunucuyu yapılandırma, gerekli yazılımların yüklenmesi, sanal makinada bazı taskların koşturulması gibi işlemleri yapmak için kullanırlar.

•Vagrant ile Chef, Puppet veAnsible vs.. gibi provisoner araçlarını kullanılabilir. Ayrıca herhangi bir provisioner aracı kullanmadan daha zahmetli olan shell script‘i yapılandırma için kullanabilirsiniz.

2.5 Vagrantfile

•Vagrant ortamımız ile ilgili her türlü bilgi bu dosyada tutulur.

•Sanal makinenin nasıl konfigure edileceği, yapılandırma işlemleri gibi tanımlamalar bu dosya içerisinde yapılır.

Ruby syntax’ına sahiptir.

•Her bir box yani proje için bir adet Vagrantfile tanımlanır.

•Vagrantfile platform bağımsızdır. Projenin Vagrantfile dosyasına sahip iseniz istediğiniz platformda sanal makinanınız ayağa kaldırabilirsiniz

3. Temel Vagrant Komutları

•Vagrant ile alakalı tüm yapılandırmamız Vagrantfile adındaki dosyamızda tanımlanacak.

•Bu dosyayı oluşturmak için izlenecek komutlar şöyledir:

3.1 Vagrantinit

•Vagrantfile adındaki dosyayı, yeni bir dosya oluşturup ismini “Vagrantfile” yaparak oluşturabilirsiniz. Ancak bize ek faydalar sağlaması sebebiyle, Vagrantfile dosyasını komut satırında oluşturacağız.

•Vagrantfile oluşturmak için kullanacağımız komut taslağı şudur;

Kutu-adı: Eğer bilgisayarınıza daha önceden vagrant box add komutu ile tanımlamış olduğunuz temel kutular varsa, o kutulardan kullanmak istediğinizin ismini bu parametre yerine yazıyorsunuz.

Kutu-url: Kullanacağınız temel kutunun url’sini, Vagrantfile oluştururken belirtmek isteyebilirsiniz. Bu gibi durumlarda bu parametreyi kullanabilirsiniz.

Seçenekler
–force : Vagrantfile oluşturmak istediğiniz dizinde daha önceden oluşturulmuş Vagrantfile varsa ve biz “Vagrant init” komutunu çalıştırmışsak üzerine yazmadan hata veriyor. Ancak bu parametreyi kullanırsanız, var olan dosyanın üzerine yazabilirsin demiş oluyorsunuz.

–minimal : Bu parametreyi kullanmazsak Vagrantfile içerisinde açıklama satırları ile belirtilmiş bazı tanımlamalar geliyor (Aşağıda daha net açıkladım). Eğer bu parametreyi kullanırsanız, Vagrantfile içeriği minimize ediliyor ve içeriğine şu üç satır yazılıyor.

–output FILE : Bu komut, Vagrant tanımlamalarını içerisinde barındıracak olan Vagrantfile dosyasının farklı bir isimle kaydedilmesini sağlar. FILE kısmına ne yazarsanız dosya isminiz o olacaktır.

3.2 VagrantUp

•Sanal sunucumuzu her ayağa kaldırmak istediğimizde bu komutu kullanacağız.

•Bu komut, verildiği dizinde Vagrantfile isimli dosyayı arar.

•Bulursa içindeki tanımlamaları, Provider’a yani kullanmış olduğumuz VirtualBox yazılımına iletir. VirtualBox da bu bilgiler ışığında bize lazım olan sunucuyu hazır eder.

3.3 Vagrant Halt

•Bu komut çalışır durumda olan sanal makinenizi tamamen kapatmanızı sağlar.

•Bilgisayarınızın bir sonraki açmanıza dek kapalı durması gibi düşünebilirsiniz.

•Eğer herhangi bir sebep ile kapanmıyorsa {seçenek} parametresi olarak –force veya kısaca -f verilebilir ve sunucu kapatılmaya zorlanabilir.

3.4 VagrantReload

•Sanal makinenizi yeniden başlatmanızı sağlar.

3.5 VagrantSuspend

•Makinenizin aktif durumu kaydedilir ve uyku moduna almanızı sağlar.”Resume” komutunu kullanana kadar makineniz güzel güzel uyur.

3.6 VagrantResume

•”Suspend” ile uyuttuğunuz makinenizi uyandırmanızı ve kaldığı yerden çalışmaya devam etmesini sağlar.

3.7 VagrantDestroy

•İlgili makinenin komple silinmesini sağlar.

•Eğer bu komutu makineniz çalışır durumdayken verirseniz, makine tanımınız VirtualBox içerisinden silinir.

•Ancak, disk üzerindeki VirtualBox ın yapılandırdığı sanal makine dosyaları silinmez. Çünkü o dosyalar o an kullanımdadır. O yüzden bu komutu vagrant halt komutundan sonra kullanmak daha mantıklıdır.

4. Vagrant Box Çıktı Alma

•Kendi oluşturuduğumuz yada düzenlendiğimiz Box’ı çalışma arkadaşlarımız yada sanal ortamda herkese açmak için ilgili dosyayı çıktı alarak .box uzantılı dosyayı oluşturuyoruz.

4.1 Vagrant Box Paylaşım İçin Hesap Oluşturma: (1/4)

https://app.vagrantup.com/account/new

•Adres girip önce forum bilgilerini dolduruyoruz ve maile linkle hesabımızı onaylatıyoruz.

4.1 Vagrant Box Paylaşım İçin Hesap Oluşturma: (2/4)

•Sağ üst Yeni Vagrant Kutu butonundan yeni sayfaya geçiş yapıyoruz.

•2. ile işaretli alana kutu ismimizin url’sini oluşturacak kısmı dolduruyoruz.

4.1 Vagrant Box Paylaşım İçin Hesap Oluşturma: (3/4)

•Oluşturacağımız kutu için .box dosyasını yükleme yapmadan önce Box’ın hangi version olduğunu ve varsa ek açıklamaları ekliyoruz ardından create version deyip diğer adıma geçiyoruz.

•Üst bölümden Provider’ı seçip yani bu Box’ın hangi Provedir’da çalışacağını belirtiyoruz çünkü başka provider’da kullananlar olabilir.

•Contiune to upload deyip diğer adıma geçiş yapıyoruz.

4.1 Vagrant Box Paylaşım İçin Hesap Oluşturma: (4/4)

•Provider seçildikten sonra .box uzantılı dosyamızı ilgili yerden ekliyoruz.

4.2 Paylaşılan VagrantBox’u kurma:

•Terminale •Vagrant box add muhammedpolat/isletimsistemleribox \  –box-version 1.1

•Yazıp box’umuzu ekliyoruz.

•Vagrant init muhammedpolat/isletimsistemleribox \  –box-version 1.1

•İle vagrantfile dosyasını oluşturup vagrant up ile çalıştırıyoruz.

4.2.1 Kendi Box’umuzu local makinede kurmak: (1/2)

•<Vagrant package> komutu ile kendi box’umuzun çıktısını alıyoruz.

4.2.1 Kendi Box’umuzu local makinede kurmak: (2/2)

•<vagrant box add package.box –name vagrant> •Komutu ile de local’de ki .box uzantılı box’umuzu vagranta ekliyoruz.

4.3 SyncedFolder (Senkronizasyon Klasörleri)

•Vagrant size kendi makineniz ile sanal sunucu olarak çalışan makine arasında dosya senkronizasyonu yapmanızı sağlıyor. Kendi makinenizde kaynak klasörünüz var, birde sanal makinede hedef klasörünüz. İşte Vagrant bu ikisini birbirine eşitliyor.

4.3.1 Syncing İşlemleri: (1/2)

•Vagrantfile dosyasının içerisinde aşağıda ki kodu ilgili satıra yazdıktan sonra kaydediyoruz.

•config.vm.synced_folder “./ortak/”, “/ortak/ortak”

4.3.1 Syncing İşlemleri: (2/2)

•İlk başta Vagrant’ı çalıştırdığımızda «ls –al» komutu ile çalıştırdığımız da dosya listesi ile daha sonra ki komutlarla oluşturduğumuz dosyalar en son ki «ls –al» komutu ile görünüyor.

4.4 Çoklu İşletim Sistemi Çalıştırma (1/9)

•Vagrant’ın bize sunduğu özelliklerden biriside çoklu işletim sistemi çalıştırma.

•Test ettiğimiz bir projeyi aynı anda çalışan birden çok işletim sisteminde deneyebilme özelliğine sahip oluyoruz.

4.4 Çoklu İşletim Sistemi Çalıştırma (2/9)

•Örneğin Windows’ta test ettiğiniz bir projenizi aynı şekilde herhangi bir Linux dağıtımında çalışıp çalışmadığı kontrol edebilmek için iki makinenin çalışır halde olması bizlere avantaj sunacaktır.

4.4 Çoklu İşletim Sistemi Çalıştırma (3/9)

•Bu işlemi vagrantfile isimli dosyada gerekli değişiklikler yaparak gerçekleştirebiliriz.

•Yandaki vagrantfile dosyasında olduğu gibi;

•Vagrant.configure(‘’2’’) do

•Komutu ile gerekli konfigrasyonları sağlayarak 2 adet işletim sistemi eklenir.

4.4 Çoklu İşletim Sistemi Çalıştırma (4/9)

•Burada örnek olarak 2 adet işletim sistemi eklenmiştir ama istenirse daha fazla işletim sistemi de eklenebilir.

•Burada lb1 1. işletim sistemi web1 ise ikinci işletim sistemini temsil etmektedir. Bu isimleri değiştirip kendimize göre isimler koyabilir fakat bu isimler makineye bağlanılırken kullanılacak isimler olduğu için dikkatli seçmekte fayda vardır.

4.4 Çoklu İşletim Sistemi Çalıştırma (5/9)

•Eğer ki vagrantfile isimli dosyaya eklediğimiz işletim sistemleri daha önce indirilmemiş ise vagrant up komutu verildiğinde inmemiş olan işletim sistemi de UP komutu gerçekleştirilmeden önce inmeye başlayacaktır.

4.4 Çoklu İşletim Sistemi Çalıştırma (6/9)

•Vagrant up komutu ile 2 adet işletim sistemimi çalışıyor görselde görüldüğü gibi.

4.4 Çoklu İşletim Sistemi Çalıştırma (7/9)

•İlk olarak Pardus işletim sistemimize bağlanıyoruz.

•Pardus işletim sistemini vagrantfile’da web1 olarak ayalardığımız için.

•Vagrant ssh web1 yazdığımızda Pardus işletim sistemimize bağlanıyor ve bu sırada 2 işletim sistemi de çalışır durumda.

4.4 Çoklu İşletim Sistemi Çalıştırma (8/9)

•Burada da 2. işletim sistemimiz olan Ubuntu’ya bağlanıyoruz.

•Vagrantfile’da lb1 olarak adlandırdığımız içinde

•Vagrant ssh lb1 ile makinemize bağlanıyoruz.

4.4 Çoklu İşletim Sistemi Çalıştırma (9/9)

•Ve son olarak Vagrant halt komutunu yani makinelerin kapanması komutunu çalıştırdığımızda solda göründüğü üzere iki makinede aynı anda kapanmış olacaktır.

Kaynakça:

https://www.vagrantup.com/docs/index.html

https://app.vagrantup.com/boxes/search

http://www.abdullahyildiz.com/vagrant-nedir-virtualbox-uzerine-vagrant-kurulumu-box-yonetimi/

http://www.gizmola.com/blog/archives/121-Vagrant-Share-and-Ngrok.html

http://uralfrkn.blogspot.com/2014/10/vagrant-vagrantfile-ile-ozellestirmek.html

https://www.youtube.com/watch?v=ndNrSSDR-j4

https://www.youtube.com/watch?v=k_A_jJMh8gw

https://www.youtube.com/watch?v=XCXXSxL6-_s

Yorum Yap!

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


The reCAPTCHA verification period has expired. Please reload the page.